1、安装vsftp及相关依赖 (不能连互联网的话就自己搭个建与系统匹配的yum源)
yum -y install vsftpd* pam* db4* (linux 6+)
yum -y install vsftpd* pam* libdb* (linux 7+)
2、建立相关用户
a、vsftpd服务的宿主用户
useradd vsftpd -s /sbin/nologin
默认的vsftpd的服务宿主用户是root,但是这不符合安全性的需要。这里建立名字为vsftpd的用户,用他来作为支持vsftpd的服务宿主用户。由于该用户仅用来支持vsftpd服务用,因此没有许可他登陆系统的必要,并设定他为不能登陆系统的用户。
b、vsftpd的虚拟宿主用户
useradd virtual -d /var/www/html/ -s /sbin/nologin
chown -R virtual:virtual /var/www/html/
vsftpd的虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,所谓vsftpd的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。由于他支撑了FTP的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,因此,处于安全性的考虑,也要非分注意对该用户的权限的控制,该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。
3、配置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_std_format=YES
listen=YES
listen_port=21
pasv_min_port=30000
pasv_max_port=35000
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
#allow_writeable_chroot=YES #linux 7+下安装的新版vsftpd需要加这个,linux 6+下不需要
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
4、生成vsftpd虚拟用户数据库文件
a、建立虚拟用户名单文件
vim /etc/vsftpd/ftpuser.txt #格式:一行用户名,一行密码
user1
passwd1
user2
passwd2
b、生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
chmod 666 vsftpd_login.db
5、配置PAM验证文件
vim /etc/pam.d/vsftpd.vu
将以下内容加入到文件最前面
32位系统:auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
64位系统:auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
上一步建立的数据库 vsftpd_login 在此处被使用,建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd/vsftpd.conf文件中的语句pam_service_name=vsftpd.vu来启用的。
6、vsftpd虚拟用户的独立配置
mkdir -p /etc/vsftpd/vsftpd_user_conf
vim /etc/vsftpd/vsftpd_user_conf/user1
配置如下:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/software/www/user1 #提前建立好相应文件夹,并修改用户和组为virtual
7、重启vsftpd服务
/etc/init.d/vsftpd restart
ps -ef | grep vsftpd #可以看到vsftpd进程在跑了
netstat -tlnp | grep vsftpd #配置的端口已监听
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8、vsftpd维护
vim /etc/vsftpd/ftpuser.txt #添加新用户,一行名字一行密码
db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
mkdir /software/www/newuser #创建用户虚拟目录
chown –R virtual:virtual /software/www/newuser
vim /etc/vsftpd/vsftpd_user_conf/newuser #新用户独立配置
/etc/init.d/vsftpd restart #重启服务