前天配置的vsftp存在一些问题,用户都是服务器真实用户,有一定的安全隐患,所以配置虚拟多用户设置,而且对每一个用户的设置也方便不少。
准备工作
防火墙设置,开放21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --reload
查看selinux是否关闭
getenforce
如果不是disable
关闭selinux
setenforce 0
永久关闭
vi /etc/selinux/config
SELINUX=disabled
安装vsftpd
yum install -y vsftpd
立即启动
systemctl start vsftpd
跟随系统启动而启动
systemctl enable vsftpd
添加宿主用户,没有建立home目录,禁止ssh登录
useradd vsftpd -s /bin/false
创建虚拟用户主目录,比如虚拟用户叫ftp1,ftp2执行下面的命令。
mkdir /var/www/ftp1 -p
mkdir /var/www/ftp2 -p
创建这个虚拟用户
vim /etc/vsftpd/vir_users.conf
文件内容如下,一行用户名,一行密码
ftp1
520140
ftp2
520140
根据这个文件创建数据库文件
db_load -T -t hash -f /etc/vsftpd/vir_users.conf /etc/vsftpd/vir_users.db
chmod 600 /etc/vsftpd/vir_users.db
启用这个数据库文件
vim /etc/pam.d/vsftpd
注释掉所有内容后,增加下面的内容,如果不注释的话会连接不上,待研究
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vir_users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vir_users
我直接清空,一个个注释太麻烦
cat /dev/null > /etc/pam.d/vsftpd
echo 'auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vir_users' >>/etc/pam.d/vsftpd
echo 'account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vir_users' >>/etc/pam.d/vsftpd
创建虚拟用户配置文件
mkdir /etc/vsftpd/userconf
建立用户配置文件
这里的文件名称必须与虚拟用户名一致
vim /etc/vsftpd/userconf/ftp1
内容
local_root=/var/www/ftp1/
write_enable=YES
virtual_use_local_privs=YES #虚拟用户和本地用户权限相同
vim /etc/vsftpd/userconf/ftp2
内容
local_root=/var/www/ftp2/
write_enable=YES
virtual_use_local_privs=YES #虚拟用户和本地用户权限相同
最后修改主配置文件
更改
anonymous_enable=NO
去掉注释
chroot_local_user=YES
ascii_upload_enable=YES
ascii_download_enable=YES
增加
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/userconf
allow_writeable_chroot=YES
更改文件所有者并设置权限
chown -R vsftpd:vsftpd /var/www
chmod 755 /var/www -R
注意有可能755权限导致连接不上,改为555即可,很奇怪的问题,半天没办法设置为755,突然可以了
重启服务器生效
systemctl restart vsftpd
配置介绍:
anonymous_enable=NO 禁止匿名用户登录
chroot_local_user=YES 禁止用户访问除主目录以外的目录
ascii_upload_enable=YES ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能
guest_enable=YES 启动虚拟用户
guest_username=vsftpd 虚拟用户使用的系统用户名
user_config_dir=/etc/vsftpd/userconf 虚拟用户使用的配置文件目录
allow_writeable_chroot=YES 最新版的vsftpd为了安全必须用户主目录(也就是/home/vsftpd/ftp1)没有写权限,才能登录,或者使用allow_writeable_chroot=YES
virtual_use_local_privs=YES #虚拟用户和本地用户权限相同