此前,使用vsftp工具来搭建ftp时,我们使用的用户为Linux的系统用户,而当我们的人员过多时,且都需要用各自的账户登录,那么管理起来将会非常地不方便。使用虚拟用户的方式能很好的解决这个问题,不占用系统用户!
关闭seliux
# 永久关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 临时关闭selinux
setenforce 0
这里需要安装两个模块,分别为vsftpd和db4-utils。
yum -y install vsftpd db4-utils
养成好习惯,修改配置前备份一下配置,以防止后续修改后无法启动时作为参考依据。
cd /etc/vsftpd/
mv vsftpd.conf vsftpd.src.conf
修改配置如下:
vim vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
allow_writeable_chroot=YES
guest_enable=yes
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=vsftpd
local_enable=YES
pasv_enable=YES
# 被动模式,占用5090-6000端口
#listen_port=52221
pasv_min_port=5090
pasv_max_port=6000
#pasv_address=49.235.71.50
vim /etc/vsftpd/userfile
在文件中填入用户名和密码,其中单行是用户名,双行是密码,比如我设置了两个用户user1和user2,他们两个的密码都是123456:
user1
123456
user2
123456
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
vim /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
vim /etc/vsftpd/chroot_list
user1
user2
mkdir /etc/vsftpd/vsftpd_user_conf
useradd -d /home/vsftpd -s /sbin/nologin vsftpd
仅下载权限
mkdir -p /home/vsftpd/user1
chown -R vsftpd:vsftpd /home/vsftpd
# 注意这里创建的文件名要和你的用户一致
vim /etc/vsftpd/vsftpd_user_conf/user1
anon_world_readable_only=NO
local_root=/home/vsftpd/user1
上传、下载权限,不能删除、不能重命名
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/vsftpd/user1
全部权限:可上传、下载、删除和改名
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/user1
systemctl restart vsftpd
systemctl enable vsftpd
firewall-cmd --add-service=ftp --permanent
firewall-cmd --add-port=5090-6000/tcp --permanent
firewall-cmd --reload