1.检查安装vsftpd服务器
rpm -qa |grep vsftpd
2.如果没有安装则yum安装
yum -y install vsftpd
3.启动
3.1 启动
systemctl start vsftpd.service
3.2 设置开机启动
systemctl enable vsftpd.service
3.3 查看状态
systemctl status vsftpd.service
4.创建用户
4.1创建用户组
groupadd ftpGroup
4.2 创建用户
useradd -d /var/ftp/collector -s /sbin/nologin -g ftpGroup -G root ${ftpUser}
解析:
useradd 添加用户ftpUser
-d 指定用户根目录为/var/ftp/collector
-s 指定shell脚本为/sbin/nologin,表示不允许shell登录
-g 创建分组ftpGroup
-G 指定root分组
PS:创建有问题可以删除重新创建 userdel -r ftpUser
4.3 设定密码
passwd ftpUser
4.4 设置访问权
ftpUser /var/ftp/collector
5.vsftpd的配置
安装完之后在/etc/vsftpd/路径下会存在三个配置文件。
vsftpd.conf: 主配置文件
ftpusers: 指定哪些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。
user_list: 指定的用户是否可以访问ftp服务器,通过vsftpd.conf文件中的userlist_deny的配置来决定配置中的用户是否可以访问,
userlist_enable=YES ,
userlist_deny=NO,
userlist_file=/etc/vsftpd/user_list 这三个配置允许文件中的用户访问FTP。
(1)查看主配置文件的默认配置:
(使用:cat /etc/vsftpd/vsftpd.conf |grep -v ‘^#’;)
(2)修改配置文件:
登录ftp后会发现,用户可以访问其他目录,并且具有mpsp组的权限,这样做是不允许的,我们需要将用户的访问范围控制在其主目录下。方法如下:
a. vi /etc/vsftpd/vsftpd.conf进入ftp配置文件目录并编辑此文件,
b.找到#chroot_list_enable=YES,删除前面的那个#号,表示开启此限制功能;
找到chroot_list_file:chroot_list_file=/etc/vsftpd/chroot_list,删除前面的那个#号,表示开启此限制功能;加入chroot_local_use=NO
(进入编辑框后按i进行开始编辑)
c.进入配置文件后,在末尾加入如下三行:
① userlist_enable=YES
userlist_deny=NO(设置为NO表示user_list中的用户可以登录,否则相反)
userlist_file=/etc/vsftpd/vsftpd.user_list
d.禁止匿名用户登录
(编辑完,按esc后使用“:wq”保存并退出)
e. 对一些文件进行编辑
① 在etc/vsftpd目录找到chroot_list文件,进入编辑状态
加入你要限制的用户名,一行一个用户,比如ftpUser
(编辑完,按esc后使用“:wq”保存并退出)
② 进入vsftpd目录,找到user_list,键入ftpUser,意味允许ftpUser登陆ftp服务器
(编辑完,按esc后使用“:wq”保存并退出)
f.配置vsftpd服务主被动模式
主动模式端口:
connect_from_port_20=YES 主动模式端口为20(该项配置文件默认已经添加)
ftp_data_port=20 指定主动模式的端口
注意:如果要修改主动模式的链接端口,只需要修改"ftp_data_port"的配置,不需要修改"connect_from_port_20=YES"的配置,有点儿诡异。另外"ftp_data_port"man帮助中并没有说明。
被动模式端口范围:
pasv_enable=YES #开启
pasv_min_port=6000 (0为随机分配)
pasv_max_port=6100(这两项定义了可以同时执行下载链接的数量。)
ps:注意如果有内外网,使用被动模式需要设置pasv_address,指定被动模式返回地址,否则外网无法访问
pasv_address=118.31.187.122 #被动模式服务器地址(外网地址)
idle_session_timeout=3600 #空闲连接主动断开时间
6.重启ftp
systemctl restart vsftpd.service
7.本地连接FTP测试
ftp 127.0.0.1
8 错误提示:
错误1:ftp vsftpd 530 login incorrect
1./etc/vsftpd/ftpusers文件中不能存在该用户
由于配置文件/etc/pam.d/vsftpd中定义了/etc/vsftpd/ftpusers中的用户不可访问ftp
2./etc/vsftpd/user_list文件中必须存在该用户
3./etc/vsftpd/vsftpd.conf文件中以下配置是否正确
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
4.cat /etc/shells 缺少sbin/nologin
错误2:vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误:
1.可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。
2.你可以在vsftpd的配置文件中增加:allow_writeable_chroot=YES
错误3.
关于ftp连接出现"226 transfer done but failed to open directory"
能是selinux的安全机制导致,于是修改/etc/selinux/config配置文件项SELINUX=disabled禁用selinux。成功。
记得修改文件后重启服务器。