基本配置
- 切换到root用户
- 查看是否安装vsftp;
rpm -qa |grep vsftpd
- 如果没有发现,则安装。
yum install vsftpd -y
- 启动vsftpd服务
service vsftpd start (启动)
service vsftpd restart (重启)
service vsftpd stop (停止)
- 测试一下能否登录FTP了,先安装一个ftp客户端组件。
yum -y install ftp
尝试登录一下
ftp localhost
输入用户名ftp,密码随便(因为默认是允许匿名的)
登录成功,就代表ftp服务可用了。
但是,外网是访问不了的,所以还要继续配置。
- 取消匿名登录
vi /etc/vsftpd/vsftpd.conf
把第一行的 anonymous_enable=YES ,改为NO
重启
service vsftpd restart
- 创建一个组,用于存放ftp用户
groupadd ftpgroups
8.创建ftp用户,并加入ftpgroups组,/home/ftp是自己建的目录,不存在就自己创建一个
useradd -d /home/ftp/ftptest -g ftpgroups ftptest
设置密码
passwd ftptest
设置不允许用于用户登录
usermod -s /sbin/nologin ftptest
9.这时候重启一下vsftpd服务
service vsftpd restart
登录一下看,可以登录了,但是发现也能访问上层目录,甚至根目录,这不是我们希望的,修改一下配置文件让其只能访问自身目录
vi /etc/vsftpd/vsftpd.conf
如下设置
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
++chroot_list文件里的用户是可以访问上层目录的++
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user
去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项: allow_writeable_chroot=YES
好了,这样就只能访问自身所属目录。
如果希望某个用户可以访问根目录,把用户名加入
/etc/vsftpd/chroot_list
不存在就创建这个文件,一行一个用户名。
如果还是登陆不了ftp,那很有可能是selinux的问题,这个东西把他关掉就行
vi /etc/selinux/config
SELINUX=enforcing 设置成SELINUX=disabled
重启一下服务器
reboot
重启完了别忘了把vsftpd服务打开,默认是自启的。
连不上的话,开启防火墙的情况,需要开启端口
1.关于防火墙
service iptables status (查看防火墙命令)
service iptables start
service iptables stop
service iptables restart
2.FTP主动、被动模式
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
PORT 和 PASV的简单区别如下:
Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到 Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。
一般浏览器默认使用的是Passive(被动)模式
3.修改vsftpd.conf配置文件让它支持Passive(被动)模式
vim /etc/vsftpd/vsftpd.conf
在最后一行添加如下内容:
pasv_enable=YES (注意 后面不能用空格)
pasv_min_port=10050 (设置被动模式的端口范围)
pasv_max_port=10060(设置被动模式的端口范围)
4.开放防火墙端口
vim /etc/sysconfig/iptables
添加如下内容:
-A INPUT -p tcp -m multiport --dport 20,21 -m state --state NEW -j ACCEPT --开启20,21端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT --开启21主动端口
-A INPUT -p tcp --dport 10050:10060 -j ACCEPT --开启被动端口