折腾了好久,遇到了好多坑,记录一下:
一:安装vsftpd
查看是否已经安装vsftpd
rpm -qa | grep vsftpd
如果没有,就安装,并设置开机启动
yum -y install vsftpd chkconfig vsftpd on
管理vsftpd相关命令:
启动vsftpd: service vsftpd start
停止vsftpd: service vsftpd stop
重启vsftpd: service vsftpd restart
二、配置防火墙,打开21端口
打开/etc/sysconfig/iptables文件
vi /etc/sysconfig/iptables
在REJECT行之前添加如下代码
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存和关闭文件,重启防火墙
service iptables start
三、配置vsftpd服务器
1.默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。
vi /etc/vsftpd/vsftpd.conf
2.添加ftp用户
下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。
#chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list
改为
chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd/chroot_list
3.禁止匿名登录
一开始我没有禁止,最后导致了其他问题
还是vsftpd.conf文件
找到:
anonymous_enable=YES
修改为:
anonymous_enable=NO
4.增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。
# 创建用户
useradd -d /home/webroot/www/ -s /sbin/nologin -M ftpuser
# 设置用户到文件夹
chown -R ftpuser /home/webroot/www/public
# 设置权限
chmod -R 777 /home/webroot/www/public
# 添加密码
passwd ftpuser
6、编辑文件chroot_list:
vi /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:
ftpuser
6、重新启动vsftpd
service vsftpd restart
另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:(未用过)
http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users
----------------------------------
出现的错误
1、500 OOPS: cannot change directory
解决方法:
在终端输入命令:
- setsebool -P ftpd_disable_trans 1
- service vsftpd restart
就OK了!
原因:这是因为服务器开启了selinux,这限制了FTP的登录。
1、使用FTP客户端的时候,注意主动模式(PORT)和被动模式(PASV),FTP可能是默认的是被动模式,假如运行不正常,可以尝试设置为主动模式。
备注:本文部分内容来自:
http://www.cnblogs.com/surge/p/3868270.html
本人在此基础上修正、加工和整理。在此感谢原作者。