---备注:下面整理的比较乱..
安装vsftpd
1、以管理员(root)身份执行以下命令
yum install vsftpd
2、设置开机启动vsftpd ftp服务
chkconfig vsftpd on
3、启动vsftpd服务
---------------这个时候就可以使用匿名访问ftp了----------------
service vsftpd start
管理vsftpd相关命令:
停止vsftpd: service vsftpd stop
重启vsftpd: service vsftpd restart
配置防火墙
打开/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
-------------------上面代码应该是为了开放 21端口,我这里没有用到-----------------
4、配置vsftpd服务器
默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。
vi /etc/vsftpd/vsftpd.conf
添加ftp用户
下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。
1、修改/etc/vsftpd/vsftpd.conf
将底下三行
#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
禁止匿名用户访问:
anonymous_enable=YES,将YES改为NO
在文件末尾加如下的设置:
pasv_enable=YES ;允许被动模式
pasv_min_port=10000 ;被动模式使用端口范围
pasv_max_port=10010
local_max_rate=200000 ;用户宽带限制 (未测试)
chroot_local_user=YES ;禁用户离开主目录(未测试)
注意:设置pasv端口后,需要修改防火墙,如在centOs里,修改如下:
iptables -A RH-Firewall-1-INPUT -p tcp --dport 10000:10010 -j ACCEPT
5、增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。
useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser
6、设置用户口令
passwd ftpuser (ftpuser)
7、编辑文件chroot_list:
vi /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如:
jlins
john
6、重新启动vsftpd
service vsftpd restart
------------------------------------------
这个时候 使用 vsftpd vsftpd报错:
错误: 已经从服务器断开
错误: 连接失败
状态: 正在等待重试... (还将重试 20 次)
错误: 连接失败
错误: 被用户中断!
状态: 正在连接 10.187.216.28 ...
状态: 已经连接到 10.187.216.28:0。正在等待欢迎信息...
响应: 220 (vsFTPd 2.2.2)
命令: USER ftpuser
响应: 331 Please specify the password.
命令: PASS *******
响应: 500 OOPS: cannot change directory:/home/wwwroot/ftpuser
错误: 连接失败
----------------------------
但客户端访问提示如下错误:
500 OOPS: cannot change directory:/home/ftp
原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。
------------------------下面是另外一种解决方式--------------------
到网上查了下,是selinux的配置问题,两种方法解决:
1、setsebool -P ftp_home_dir on 之后再运service vsftpd restart
或 setsebool -P ftpd_disable_trans on 之后再运service vsftpd restart 也行
2、关闭selinux
修改/etc/selinux/config文件或/etc/syscofnig/selinux设置SELINUX= disabled ,然后重启
具体运行命令
[[email protected] wwwroot]# setsebool -P ftp_home_dir on
[[email protected] wwwroot]# service vsftpd restart
------------配置完全上面的之后再次出现 550 Create directory operation failed. (在修改的过程中失误关闭了 service iptables stop 如果需要可以重新启动)
解决方法如下
第一步、给目录配置 777权限
第二步、关闭SELinux方法
# vi /etc/selinux/config
将 SELINUX=XXX -->XXX 代表级别
改为
SELINUX=disabled
重启就OK了! (注意;这里的重新启动是重新启动服务器!!!!!)
如果不想重新启动服务器可以使用如下命令:
setenforce 0
然后在重新启动 vsftpd
原文地址:http://www.itmmd.com/201410/72.html
该文章由 android开发 整理发布,转载须标明出处。。