安装vsftpd
yum -y install pam pam-devel db4 db4-tcl
yum -y install vsftpd
配置vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
#设成YES,允许匿名用户登陆
anonymous_enable=NO
#允许/禁止本地用户登陆 注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
local_enable=YES
#设定可以进行写操作。
write_enable=YES
#设定上传后文件的权限掩码,文件644,文件夹755
local_umask=022
#设定开启目录标语功能
dirmessage_enable=YES
#设定开启日志记录功能。
xferlog_enable=YES
#设定端口20进行数据连接
connect_from_port_20=YES
#设定日志使用标准的记录格式
xferlog_std_format=YES
#开启独立进程vsftpd,不使用超级进程xinetd。设定该Vsftpd服务工作在StandAlone模式下。
listen=YES
#设定,启用pam认证,并指定认证文件名/etc/pam.d/vsftpd
pam_service_name=vsftpd
#设定userlist_file中的用户将不得使用FTP
userlist_enable=YES
#设定支持TCP Wrappers
tcp_wrappers=YES
#限制所有用户在主目录
chroot_local_user=YES
#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户
guest_username=guoke
#设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,
#一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。
user_config_dir=/etc/vsftpd/vconf
配置虚拟用户
创建虚拟用户名单文件
创建虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。
virtusers文件格式如下:
username
password
生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
设置认证文件PAM
编辑vsftpd的PAM验证配置文件,把原来的配置文件全部注释掉(不注释掉虚拟用户会登录不上),添加如下行
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup
vim /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。
- 这里的auth是指对用户的用户名口令进行验证。
- 这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
- 其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。
- 再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
- 最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。
创建虚拟用户配置文件存放路径
路径配置在vsftpd.conf
文件的user_config_dir
中
mkdir /etc/vsftpd/vconf
建立虚拟用户配置文件
创建ftp的目录,设置属组属主为guoke,应为我们上面指定虚拟用户的宿主用户是guoke,这样ftp用户才有权限对目录进行操作。
# 创建目录
mkdir -p /data/ftp/username/
# 设置目录权限
chown guoke.guoke -R /data/ftp/username/
chmod 755 /data/ftp/username/
#编辑配置
vim /etc/vsftpd/vconf/username
#指定虚拟用户的具体主路径
local_root=/data/ftp/username/
#设定不允许匿名用户访问
anonymous_enable=NO
#设定允许写操作
write_enable=YES
#设定上传文件权限掩码
local_umask=022
#设定不允许匿名用户上传
anon_upload_enable=NO
#设定不允许匿名用户建立目录
anon_mkdir_write_enable=NO