一.安装与启动vsftpd

yum -y install vsftpd

/usr/sbin/vsftpd或service vsftpd start

netstat -ntlp

chkconfig --level 35 vsftpd on

二.FTP相关配置文件说明

1.vsftpd.conf文件说明

anonymous_enable=YES 是否允许匿名ftp,如否则选择NO

local_enable=YES 是否允许本地用户登录

write_enable=YES 允许使用任何可以修改文件系统的FTP的指令

local_umask=022 默认的umask码

anon_upload_enable=YES 允许匿名上传文件

anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利

dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件

xferlog_enable=YES 是否记录ftp传输过程

connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)

chown_upload=YES 所有匿名上传的文件的所属用户将会被更改成chown_username 

chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主

xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log

xferlog_std_format=YES 是否使用标准的ftp xferlog模式

idle_session_timeout=600 设置默认的断开不活跃session的时间

data_connection_timeout=120 设置数据传输超时时间

nopriv_user=ftpsecure 运行vsftpd需要的非特权系统用户,默认是nobody

async_abor_enable=YES 允许使用\"async ABOR\"命令,一般不用,容易出问题 

ascii_upload_enable=YES 管控是否可用ASCII 模式上传。默认值为NO

ascii_download_enable=YES 是否使用ascii码方式上传和下载文件

ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息

deny_email_enable=YES 如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录

banned_email_file=/etc/vsftpd.banned_emails 禁止使用匿名用户登陆时作为密码的电子邮件地址 

chroot_local_user=YES 在预设的情况下,是否要将使用者限制在自己的家目录之内,如果是YES代表用户默认就会被chroot,如果是NO,则预设是没有chroot。不过,实际还是需要底下的两个参数互相参考才行。为了安全性,这里应该要设定成YES才好

chroot_list_enable=YES 如果启动这项功能,则所有列在chroot_list_file中的使用者不能更改根目录 

chroot_list_file=/etc/vsftpd.chroot_list 定义不能更改用户主目录的文件

ls_recurse_enable=YES    是否能使用ls -R命令以防止浪费大量的服务器资源 

listen=YES 

pam_service_name=vsftpd   定义PAM 所使用的名称,预设为vsftpd

userlist_enable=YES  若启用此选项,userlist_deny选项才被启动 

tcp_wrappers=YES  开启tcp_wrappers支持 

#local_root=/home/username   当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。



2.vsftpd.ftpusers文件说明

root //默认情况下,root和它以下的用户是不允许登录FTP服务器的.可以将不允许登录的用户添加到这里来.但切记每个用户都要单独占用一行.
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

3.vsftpd.user_list文件说明

其实它的内容跟上面那个文件内容一样,只是在系统对文件vsftpd.conf 进行检测时,会检测到"userlist_deny=YES",因此这个文件必须存在.


注意:修改前建议使用“cp”命令备份这三个文件,修改完成后需要重启vsftpd服务才能使设置生效。


三.配置实例

不允许匿名登录FTP,只允许系统用户登录,且固定到自己的家目录

为了防止配置过程中出现错误,一般应把原配置文件/etc/vsftpd/vsftpd.conf复制一份到别的目录中,一旦配置后出现问题解决不了,还可以把原配置文件复制回来.

修改文件/etc/vsftpd/vsftpd.conf如下:

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/xferlog

xferlog_std_format=YES

dual_log_enable=YES

vsftpd_log_file=/var/log/vsftpd.log

ascii_upload_enable=YES

ascii_download_enable=YES

ftpd_banner=Welcome to my FTP service.

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES


pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

use_localtime=YES


touch /var/log/vsftpd.log

touch /var/log/xferlog

touch /etc/vsftpd/chroot_list

vim /etc/vsftpd/chroot_list

把要固定在家目录的用户添加到里面


service vsftpd restart


Ps:一定要加上 chroot_local_user=YES

否则通过浏览器登录时会默认在根/下,不仅能访问其他目录,还有读、写权限

Vsftpd虚拟用户的配置

第一步、安装

#cd  /etc/yum.repos.d/

# rm -rf *

# wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo

# yum clean all

# yum -y install vsftpd

# yum -y install db4-utils

 

第二步、建立虚拟用户

#vim /etc/vsftpd/vu_list.txt

 

user1  password1  user2  password2  user3  password4

格式为第一行为用户名名,第二行为密码,然后类推

 

建立db数据库,同时只有root用户才能读写

# db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db

# chmod 600 /etc/vsftpd/vu_list.db

配置pam文件

# vim /etc/pam.d/vsftpd.vu (64位系统) 

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list

# vim /etc/pam.d/vsftpd.vu (32位系统)

auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login  account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

建立虚拟用户对应的系统真实用户

useradd  wangxu4 -d /data -s /sbin/nologin

chown wangxu4.wangxu4 -R /data

注:在虚拟主机服务器上用nginx,用户为www,所以我的配置为虚拟用户为www

 

第三步、修改配置文件

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_file=/var/log/xferlogxferlog_std_format=YESdual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.logascii_upload_enable=YESascii_download_enable=YESftpd_banner=Welcome to FTP service.chroot_local_user=YESlisten=YESlisten_port=2121allow_writeable_chroot=YESuserlist_enable=YEStcp_wrappers=YESguest_enable=YESguest_username=wangxu4pam_service_name=vsftpd.vuuser_config_dir=/etc/vsftpd_vuvirtual_use_local_privs=YES

注释如下:

anonymous_enable=NO

设定不允许匿名访问

local_enable=YES

设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。

write_enable=YES

设定可以进行写操作。

local_umask=022

设定上传后文件的权限掩码。

anon_upload_enable=NO

禁止匿名用户上传。

anon_mkdir_write_enable=NO

禁止匿名用户建立目录。

dirmessage_enable=YES

设定开启目录标语功能。

xferlog_enable=YES

设定开启日志记录功能。

connect_from_port_20=YES

设定端口20进行数据连接。

chown_uploads=NO

设定禁止上传文件更改宿主。

xferlog_file=/var/log/vsftpd.log

设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。

xferlog_std_format=YES

设定日志使用标准的记录格式。

nopriv_user=vsftpd

设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。

async_abor_enable=YES

设定支持异步传输功能。

ascii_upload_enable=YES

ascii_download_enable=YES

设定支持ASCII模式的上传和下载功能。

ftpd_banner=Welcome to Awei FTP servers

设定Vsftpd的登陆标语。

chroot_local_user=YES

禁止本地用户登出自己的FTP主目录。

pam_service_name=vsftpd

设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。

以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。

guest_enable=YES

设定启用虚拟用户功能。

guest_username=ftp

指定虚拟用户的宿主用户。

virtual_use_local_privs=YES

设定虚拟用户的权限符合他们的宿主用户。

user_config_dir=/etc/vsftpd/vconf

设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的

地方就是这些配置文件名必须和虚拟用户名相同。

 

第四步、建立日志

因为默认vsftpd的日志文件不存在,需要手工建立,同时赋予权限

# touch /var/log/vsftpd.log

# chown /var/log/vsftpd.log

 

第五步、建立虚拟用户配置文件

# mkdir /etc/vsftpd_vu/

所有权限

# vim /etc/vsftpd_vu/user1

write_enable=YES anonymous_enable=NO anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=Yes local_root=/data/user1

上传权限

# vim /etc/vsftpd_vu/user2

write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_umask=022 download_enable=NO local_root=/data/user2

 

只能下载

# vim /etc/vsftpd_vu/user3

write_enable=NO anon_world_readable_only=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO local_umask=022 download_enable=yes local_root=/data/user3

 

启动服务

#service vsftpd start

新版本vsftpd一定要加上allow_writeable_chroot=YES,否则登录报500错误