CentOS7安装vsftpd及配置详解

发表时间
评论 没有

一:安装vsftpd

查看是否已经安装vsftpd

rpm -qa | grep vsftpd

如果没有,就安装:

yum -y install vsftpd

执行完成后,就会看到Complete!表明安装成功了!

设置开机启动:

systemctl enable vsftpd.service

安装完成后,查看服务启动状态:

systemctl stop vsftpd.service
systemctl start vsftpd.service
systemctl restart vsftpd.service
systemctl status vsftpd.service

检查端口:

netstat -anp|grep 21

ftp服务启动的是21端口,按此方法开启21端口

二:设置用户

要连接上 vsftpd 服务器需要为Linux创建专门的用户, 接下来创建这个用户:

1:用户目录

在Linux中,不同用户是有不同目录访问权限的,所以首先创建一个目录,作为这个ftp用户所拥有的目录。

mkdir -p /home/ftproot/ftptest

2:创建用户

创建用户ftptest,并且指定其目录为用户目录中创建的/home/ftproot/ftptest

useradd -d /home/ftproot/ftptest -g ftp -s /sbin/nologin ftptest

-g ftp 表示该用户属于ftp分组 (ftp分组是内置的,本来就存在,不需要自己创建)
-s /sbin/nologin 表示这个用户不能用来登录secureCRT这样的客户端,这种不能登陆的用户又叫做虚拟用户

创建过程给出的警告信息是正常的,不用理会

3:设置目录权限

把目录/home/ftproot/ftptest的拥有者设置为ftptest

chown -R ftptest /home/ftproot/ftptest

使ftptest用户拥有这个目录的读写权限

chmod -R 775 /home/ftproot/ftptest

对设置权限不懂的,请查看:Linux常用命令

4:设置密码

为ftptest用户设置密码:

passwd ftptest

密码修改成功后会如图所示出现成功提示。

三:配置用户

要在vsftpd服务器中配置该用户

1:去掉匿名登录

默认情况下vsftpd服务器是允许匿名登陆的,这样非常不安全,所以要把这个选项关闭掉。
首先通过vi命令打开ftp服务器配置文件:

vi /etc/vsftpd/vsftpd.conf

然后把本来的

anonymous_enable=YES       

修改为

anonymous_enable=NO

修改完成之后,保存退出。

2:限制用户访问

创建的ftptest用户所拥有的目录是 /home/ftproot/ftptest,如果不做限制,那么使用ftptest登陆之后可以切换到其他敏感目录去,比如切换到/usr目录去,这样就存在巨大的安全隐患。 为了规避这个隐患,需要限制ftptest用户只能通过ftp访问到 /home/ftproot/ftptest 目录以及子目录。

配置办法:
首先通过vi命令打开ftp服务器配置文件:

vi /etc/vsftpd/vsftpd.conf

找到:

#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list       

#chroot_list_file=/etc/chroot_list  

并修改为:

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

注:
chroot_list_enable=YES: 表示对用户访问进行限制
chroot_list_file=/etc/vsftpd/chroot_list 在这个配置文件中添加用户,每个用户一行,则在这个文件里的用户登录ftp后, 可以访问上级目录 。而不在这个配置文件中的用户只能访问自己的home目录。

修改完成之后,保存退出。

3:用户列表

在chroot_list中添加ftptest用户,首先通过vi命令打开chroot_list文件(此文件本来是空的):

vi /etc/vsftpd/chroot_list

然后增加一行:

ftptest

修改完成之后,保存退出。

4:允许写权限

vsftpd服务器,一旦某个用户被限制访问了,那么默认情况下,该用户的写权限也被剥夺了。 这就导致ftp客户端连接上服务器之后无法上传文件。这个时候,就需要打开此用户的写权限,请按照如下办法操作:
首先通过vi命令打开ftp服务器配置文件:

vi /etc/vsftpd/vsftpd.conf

在最后面新加一行:

allow_writeable_chroot=YES

修改完成之后,保存退出。

四:配置端口

vsftpd有两种端口:

一种是21端口,用来监听客户端连接请求的。 这个一般说来是固定的,就一直使用21端口。
一种是,一旦获取到请求之后,再专门用户服务端和客户端传输数据的端口。 (安装用的这种)

1:配置端口

打开配置文件:

vi /etc/vsftpd/vsftpd.conf

在最后添加:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010

这表示使用被动模式,用于传输数据的端口分配从30000-30010之间。
在后续要开放相应端口。

五:用户鉴权

因为用户 ftptest 是 nologin的,所以存在鉴权的问题。 如果鉴权问题不解决,就是永不停息的 530错误。。。搞死宝宝了
解决办法有如下两种:

1:方式一: pam.d/vsftpd 文件

vi /etc/pam.d/vsftpd

注释掉/etc/pam.d/vsftpd文件里这一行: #auth required pam_shells.so
这样不去鉴权,从而允许 ftptest 这种 nologin用户登录 ftp 服务器.

2:方式二:shells 文件

vi /etc/shells

在/etc/shells文件里面增加一行:/sbin/nologin
这样允许不能登录系统的用户通过鉴权

六:重启服务器

systemctl restart vsftpd.service

最后执行查看状态,以查看重启成功了

systemctl status vsftpd.service

bug解决方案:开启selinux权限

VSFTPD是一个FTP服务器程序,然后SELinux是CentOS的防火墙组件。由于 vsftpd 默认被 SELinux 拦截,所以会遇到的FTP以下的问题:

1.226 Transfer done (but failed to open directory).(传输完成,但是打开路径失败)

2.550 Failed to change directory(更改路径失败)

3.553 Could not create file.

4.或者干脆在发送了LIST命令以后,服务器没响应,超时断开。

遇到这样的问题,通常是vsftpd 没有足够的权限,很有可能是被SELinux阻止了。

查看命令:

getsebool -a | grep ftpd

#以下是显示出来的权限,off是关闭权限,on是打开权限

ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
tftp_home_dir --> off

其中,ftp_home_dir和allow_ftpd_full_access必须为on 才能使vsftpd 具有访问ftp根目录,以及文件传输等权限。

设置命令:setsebool -P xxxxxx on

setsebool -P ftpd_full_access on
setsebool -P tftp_home_dir on

bug解决方案:被动模式连接服务器提示“服务器发回了不可路由的地址。使用服务器地址代替。”

我的理解是:vsftpd默认使用ipv6,我在上面加的那个属性地址,在使用IPv4时会发生错误。
解决方法:

listen=NO -> listen=YES
listen_ipv6=YES ->listen_ipv6=NO

这两处要一起改,单独改一处会发生错误,重启不了。

开启被动模式的代码:

# vim /etc/vsftpd/vsftpd.conf
#需要加入外部ip,否则被动模式会失败
pasv_address=39.96.38.179 #设置服务器外部ip
pasv_addr_resolve=YES

两处都要改,否则没有效果。

此bug不改filezilla不影响使用,但coda2不能列表。

作者
分类 网站建设, 电脑网络

评论

本文评论功能已关闭。

← 较早的 较新的 →