这里使用root用户操作
yum -y install vsftpd
setenforce 0 如果显示 getsebool: SELinux is disabled
vi /etc/selinux/config 将disabled 改成这样 SELINUX=permissive
解释
强制模式SELINUX=enforcing:表示所有违反安全策略的行为都将被禁止。
宽容模式SELINUX=permissive:表示所有违反安全策略的行为不被禁止,但是会在日志中作记录
SELINUX=disabled,也可以直接关闭
需要创建一个这样的文件不然会无法重启服务器 touch /.autorelabel 然后重启 reboot
先创建一些虚拟用户,文件名vu_pw.txt可以自定义 以用户密码的方式填写 admin用户名,admin123是密码
cat >>/etc/vsftpd/vu_pw.txt<<EOF admin 123456 EOF
把vu.txt明文文件转换成vu.db数据库文件
db_load -T -t hash -f /etc/vsftpd/vu_pw.txt /etc/vsftpd/vu_pw.db
授权
chmod 600 vu_pw.db
然后创建一个系统用户用于映射虚拟用户但不做系统登录用户(提高安全)
useradd -d /ftp的目录路径 -s /sbin/nologin ftpadmin
创建虚拟用户upadmin的目录
mkdir /ftp的目录路径
#修改虚拟用户upadmin的所属组和所属用户
chown -R ftpadmin:ftpadmin /ftp的目录路径
修改/ftp的目录的权限
chmod -R 755 /ftp的目录路径
创建用于支持虚拟用户的PAM文件
cat >>/etc/pam.d/vs.vu<<EOF
auth required pam_userdb.so db=/etc/vsftpd/vu_pw
account required pam_userdb.so db=/etc/vsftpd/vu_pw
EOF
这个vu_pw就是上面创建的vu_pw.txt (db) 用户身份认证吧 修改权限
chmod -R 600 /etc/vsftpd/vu_perm/
创建一个文件夹用于存放对应用户的权限 mkdir /etc/vsftpd/vu_perm 比如这里为admin创建一个具备上传、下载、创建目录、删除和移动文件的权限
cat >>/etc/vsftpd/vu_perm/admin<<EOF
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/ftp的目录路径
EOF
修改配置文件 vim /etc/vsftpd/vsftpd.conf 修改成以下内容,没有就加
anonymous_enable=NO
guest_enable=YES
guest_username=ftpadmin
allow_writeable_chroot=YES
xferlog_file=/var/log/xferlog
pam_service_name=vs.vu
user_config_dir=/etc/vsftpd/vu_perm
防火墙配置,如果你直接关闭也可以不安全而已(如果本来就不安全开了也没用) firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
ftp相关的SeLinux布尔值设置.
setsebool -P ftpd_connect_all_unreserved=on
setsebool -P ftpd_full_access=on
重启vsftpd服务并设置跟随系统自启动
systemctl restart vsftpd
systemctl enable vsftpd