目录
创建vsftpd服务程序用于储存文件的根目录以及用于虚拟用户映射的系统本地用户
前期准备工作
安装vsftpd服务程序
dnf install vsftpd
#清除防火墙的默认策略
iptables -F
#把当前已经被清理的防火墙策略状态保存下来
iptables-save
再把FTP协议添加到firewalld服务的允许列表中
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
过滤vsftpd服务程序的主配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
cat /etc/vsftpd/vsftpd.conf
接下来手动安装ftp客户端工具,以便在后续实验中查看结果
dnf install ftp
关闭SELINUX安全子系统
#临时关闭,在终端输入
setenforce 0
#永久关闭,永久关闭需要重启
vim /etc/selinux/config
#把SELINUX的值改为"disabled"
匿名用户模式
vsftpd服务程序默认关闭了匿名开放模式,选择开启匿名用户的一些权限
#打开vsftpd服务程序配置文件
vim /etc/vsftpd/vsftpd.conf
#输入
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后重启vsftpd服务程序,设置开机启动项
systemctl restart vsftpd
systemctl enable vsftpd
将目录的所有者身份改成系统账户ftp即可(增加权限)(在匿名开放认证下,默认访问的是/var/ftp目录
chown -R ftp /var/ftp/pub
#此方法可能会导致服务被“安全锁定”而不能登录
chown -R 777 /var/ftp
然后就可以用客户端执行命令连接到远程的FTP服务器
本机用户模式
配置本地用户参数
#打开配置文件
vim /etc/vsftpd/vsftpd.conf
#输入以下参数
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#然后重启服务程序
systemctl restart vsftpd
#添加到开机启动项
systemctl enable vsftpd
查看vsftpd服务程序所在目录中默认存放的两个“用户名单”的文件(ftpusers和user_list)里面写着的就不允许登录
cat /etc/vsftpd/user_list
cat /etc/vsftpd/ftpusers
#如果有你想要登陆的用户的名字,就把他从这里面删除
配置完成后使用客户端登陆
虚拟用户模式
重新安装vsftpd服务
dnf install vsftpd
创建用于进行FTP认证的用户数据库文件
cd /etc/vsftpd
vim vuser.list
#创建两个用户
zhangsan
redhat
lisi
redhat
#由于明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要转换一下
db_load -T -t hash -f vuser.list vuser.db
chmod 600 vuser.db
rm -f vuser.list
创建vsftpd服务程序用于储存文件的根目录以及用于虚拟用户映射的系统本地用户
useradd -d /var/ftproot -s /sbin/nologin virtual
ls -ld /var/ftproot/
chmod -Rf 755 /var/ftproot/
建立用于支持虚拟用户的PAM文件
vim /etc/pam.d/vsftpd.vu
#添加以下内容
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
修改vsftpd服务程序的主配置文件
#过滤文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
cat /etc/vsftpd/vsftpd.conf
#打开配置文件
vim /etc/vsftpd/vsftpd.conf
#添加以下内容
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
pam_service_name=vsftpd.vu
为两个虚拟用户设置不同的权限
mkdir /etc/vsftpd/vusers_dir
cd /etc/vsftpd/vusers_dir
touch lisi
vim zhangsan
#添加以下内容
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#修改vsftpd主配置文件
vim /etc/vsftpd/vsftpd.conf
#添加以下内容
user_config_dir=/etc/vsftpd/vusers_dir
#重启vsftpd服务程序
systemctl restart vsftpd
systemctl enable vsftpd