1.yum install vsftpd -y 安装
2.自定义ftp根目录
mkdir -p /var/ftp/pub/ftptest
3.创建用户
(释义)-s /sbin/nologin 表示表示这个用户不能用来登录secureCRT这样的客户端。 这种不能登陆的用户又叫做虚拟用户。
useradd -d /var/ftp/pub/ftptest -g ftp -s /sbin/nologin ftptest
4.设置目录权限及用户权限
chown -R ftptest /var/ftp/pub/ftptest //更改目录拥有者
chmod -R 775 /var/ftp/pub/ftptest // 设置目录权限
5设置密码
passwd ftptest
6.用户配置修改配置文件
vi /etc/vsftpd/vsftpd.conf
(1) 修改#anonymous_enable=YES 为anonymous_enable=NO 去掉匿名登录
(2) 修改 #chroot_list_enable=YES 为 chroot_list_enable=YES用户访问限制
(3) 修改 #chroot_list_file=/etc/vsftpd.chroot_list 为
chroot_list_file=/etc/vsftpd.chroot_list 限制指定用户
(4) 添加一行 allow_writeable_chroot=YES 添加写的权限
(5) 添加一行 pasv_enable=YES 设置被动模式
(6) 添加一行pasv_min_port=30000 最小端口号
(7) 添加一行pasv_max_port=30010 最大端口号
7.允许用户访问清单
vi /etc/vsftpd/chroot_list //增加一行 ftptest (允许访问ftp的用户)
8.用户鉴权问题
Setenforce 0(selinuex disable) 设置后可bu重启服务器,如不设置无法访问子集目录
Chroot_list_enable=YES 用户可切换目录(系统报错为根目录不存在时就是这个问题)
因为用户 ftptest 是 nologin的,所以存在鉴权的问题。 如果鉴权问题不解决,就是永不停息的 530错误,无法登陆,提示登陆信息错误。
解决方式:
1)vi /etc/pam.d/vsftpd
注释掉/etc/pam.d/vsftpd文件里这一行:#auth required pam_shells.so
这样不去鉴权,从而允许 ftptest 这种 nologin用户登录 ftp 服务器.
2)vi /etc/shells
在/etc/shells文件里面增加一行:/sbin/nologin
这样允许不能登录系统的用户通过鉴权
3)修改local 022 为002并重新设置文件权限为755
4)Ftpd_allow_access设置为on
常见问题:a.以上配置完成无法登陆问题,关闭防火墙。systemctl stop iptables.service 或者是systemctl stop firewalld.service
b.无法上传文件可修改selinux模式为宽容模式,getenforce查看 setenforce 0(宽容permissive)1(强制enforcing)Disabled(禁用)