CentOS安装vsftpd(ftp服务器)及配置详解

小白一枚,第一次安装vsftpd服务器,搞了一下午,各种纠结,各种报错,网上虽然一大堆教程,也都是各种安装方式都有,因此,特地写下博客记录下,以防止以后用到,希望能帮到有需要的朋友。

vsftpd 全称是:very secure FTP daemon 非常安全的ftp后台程序,及ftp 服务端!

 

一:安装vsftpd

查看是否已经安装vsftpd

rpm -qa | grep vsftpd

如果没有,就安装:

yum -y install vsftpd

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

设置开机启动:

chkconfig vsftpd on

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

service vsftpd start   启动

service vsfptd status   状态

service vsftpd restart   重启

service vsftpd stop   停止

在这里大家注意点:在centos7之后,查看服务启动就改成了 :

systemctl stop vsftpd.service

systemctl start vsftpd.service

systemctl status vsftpd.service

本人调试的centos为6.5的版本,请大家自行查看服务器版本!

命令查看后,最后 Started vsftpd ftp daemon 已经启动成功了

检查端口:

netstat -anp|grep 21

ftp服务启动的是21端口,使用如下命令应该观察到21端口正在处于监听状态,这反应了ftp服务器启动成功了。

 

二:设置用户

要连接上 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

修改完成之后,保存退出。
对使用vi命令不熟悉的请看:Linux中Vi编辑器之简单常用命令

2:限制用户访问

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

vi /etc/vsftpd/vsftpd.conf

找到:

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list       或   #chroot_list_file=/etc/chroot_list  

并修改为:

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

注:
chroot_list_enable=YES: 表示对用户访问进行限制
chroot_list_file=/etc/vsftpd/chroot_list 表示对chroot_list里面指定的用户进行限制 

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

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 配置:chroot_local_user与chroot_list_enable详解

 

四:配置端口

vsftpd有两种端口:

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

1:配置端口

打开配置文件:

vi /etc/vsftpd/vsftpd.conf


在最后添加:

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30010

这表示使用被动模式,用于传输数据的端口分配从30000-30010之间。
在后续的Linux开放端口教程中也会做相应的配合工作。

 

五:用户鉴权

因为用户 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
这样允许不能登录系统的用户通过鉴权

六:重启服务器

service vsftpd restart


但是centos7之后,改用的命令是如下方式:

systemctl restart vsftpd.service

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

service vsftpd status

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 ftp

getsebool -a | grep ftpd

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

allow_ftpd_anon_write --> off

allow_ftpd_full_access --> off

allow_ftpd_use_cifs --> off

allow_ftpd_use_nfs --> off

ftp_home_dir --> off

ftpd_connect_db --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

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

设置命令:setsebool -p xxxxxx on

setsebool -P allow_ftpd_full_access on

setsebool -P ftp_home_dir on

 

  • 12
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值