1. 安装vsftpd的
yum -y install vsftpd
2. 设置开机启动
systemctl enable vsftpd
systemctl -l | grep vsftpd #查看是否开机自启动
3. 启动ftp服务
systemctl start vsftpd.service
4. 打开防火墙,开放21端口
1 firewall-cmd --zone=public --add-port=21/tcp --permanent
2 firewall-cmd --permanent --zone=public --add-service=ftp
3 firewall-cmd --reload
5. 添加ftp用户
useradd -g root -d /apuser/ftp -s /sbin/nologin ftpuser
注:表示新增一个ftpuser(用户名),且指定上传目录在/apuser/ftp下
如果后期想变更此用户的上传目录到(/opt/ftpfile),请使用下面的命令:
usermod -d /opt/ftpfile ftpuser
6. 设置用户密码
passwd ftpuser
7. 配置selinux 允许ftp访问home和外网访问
1 setsebool -P allow_ftpd_full_access on
2 setsebool -P ftp_home_dir on3
3 getsebool -a | grep ftp #查看ftp设置
8. 设置权限(此用户可以访问整个主机目录,后面备注设置权限问题)
chown -R ftpuser:root /apuser/ftp
9. 修改vsftp配置文件
路径:vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 改为: anonymous_enable=NO
allow_writeable_chroot=YES #允许用户具有主目录写权限
reverse_lookup_enable=NO # 表示不查找dns服务器
10. 错误处理
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
要修复这个错误,可以用命令chmod a-w /apuser/ftp去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列设置:allow_writeable_chroot=YES
vsftpd--530 Login incorrect. Login failed
解决办法:
cat /etc/passwd
查看对应的ftp用户所对应的主目录和登陆shell
对应我的为:sbin/nologin
接着:
vim /etc/shells
添加/sbin/nologin即可。
500 OOPS: cannot change directory:/home/frank
selinux如果打开,执行如下命令运行ftp。
setsebool ftpd_disable_trans 1
service vsftpd restart
如果selinux已经disabled。那么应该是ftp目录的权限问题。检查ftp用户的对应主目录及上级目录。ftp用户是否有相应的权限。如果没有请添加。
chmod 777 /apuser/ftp -R #777为最高权限,请根据各自情况设定相应权限。
如果还有问题,尝试以下解决方法
修改/etc/pam.d/vsftpd
auth required pam_shells.so修改为->auth required pam_nologin.so
11. 其他参考配置参数
1)如果客户端登录vsftp很慢,加上reverse_lookup_enable=NO表示不查找dns服务器
2)local_root=path 指定本地用户根目录
3)anon_root=path 指定匿名用户根目录
4)user_config_dir=path 指定用户个人配置文件所在的目录,用户的个人配置文件为该目录中的同名文件
5)anon_max_rate=0 指定匿名用户最大的传输速度
6)local_max_rate=0 指定本地用户最大的传输速度
7)max_clients=0 指定vsftp允许的最大连接数
8)max_per_ip=0 指定每个ip地址允许建立的最大连接数
9)accept_timeout=60 指定pasc模式的连接超时时间(秒)
10)connect_timeout=60 指定port方式的连接超时时间
11)data_connection_timeout=300 ftp数据的连接超时时间
12)idle_session_timeout=600 限制空闲时间过多久就中断连接
13)chroot_list_enable=yes 限制用户在宿主目录中,不能通过cd切换到系统的其他目录中
14)chroot_list_file=/etc/vsftpd/chroot_list 在chroot_list中存放的是被锁定的用户列表,这些用户只能在其宿主目录中操作,不能通过cd切换目录到系统的其他目录中去
15)ftpd_banner=char 设置ftp登录时的欢迎信息
16)限制客户端可连接的ip地址tcp_wrappers=yes:tcp_wrappers是一种使用访问控制列表(acl)来防止主机名和主机地址欺骗的保护机制
17)限制黑名单用户userlist_enable=yesvim /etc/vsftpd/user_list在这个文件中加入黑名单用户
12. vsftpd.conf参考配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
reverse_lookup_enable=NO
allow_writeable_chroot=YES