linux 下搭建vsftpd

近来一直研究如何在linux下搭建ftp服务器,在搭建过程中走了很多弯路,一直迟迟不能搭建成功,终于通过网友提供的方法,搭建成功

现在讲搭建过程分享一下

第一步:首先判断是否已安装vsftpd,  执行命令:

rpm -qa | grep vsftpd  

已安装返回vsftpd版本号,未安装没有提示。

第二步:安装vsftpd 

命令:yum -y install vsftpd

第三步:安装vsftpd后,开始搭建vsftpd

1.首先创建ftp文件夹根目录,位置任意,我创建在/home/下创建ftproot文件夹。在ftproot文件夹下可以创建多个用户对应自己的根目录文件夹

mkdir -p /home/ftproot/ftptest

2.创建用户

创建用户时要并且指定其目录为用户目录中创建的 /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,后期可以通过vsftpd.conf的配置文件直接对应到此文件夹下

chown -R ftptest /home/ftproot/ftptest

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

chmod -R 775 /home/ftproot/ftptest

4:设置密码

passwd ftptest 

输入两次密码,密码设置成功

第四步:配置vsftpd.conf文件

vi /etc/vsftpd/vsftpd.conf

修改配置文件如下:

anonymous_enable=NO   禁止匿名用户登录

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里面指定的用户进行限制 

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

vsftpd.conf配置文件增加如下几行:

allow_writeable_chroot=YES  打开用户上传文件的的读写权限(必须)

以下三行新增配置,我本人测试后,不添加三行,也不影响用户文件的上传,,姑且保留,如有哪位网友知道原因,可以给我留言

pasv_enable=YES

pasv_min_port=3000

pasv_max_port=30010

这表示使用被动模式,用于传输数据的端口分配从30000-30010之间。

 配置用户列表

在/etc/vsftpd/下新增文件chroot_list ,此文件和上面的路径对应

命令:vi /etc/vsftpd/chroot_list

插入用户:ftptest,如果有其他用户可以在此文件中添加,新添加的用户访问根目录同上面的第二步

保存文件退出。

五:用户鉴权

因为用户 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

到此vsftpd服务器搭建完成,可以通过上面创建的用户进行测试

总结:最好将selinux和防火墙都关闭,要不开发的开端口的还需要在防火墙上做规则,关闭后,就不需要做啥规则了。

关闭selinux方法,参考https://www.cnblogs.com/liuzgg/p/11656532.html

关闭防火墙方法:systemctl stop firewalld

在连接过程中,有时报530 login incorrect 错误,看看

vi /etc/pam.d/vsftpd 文件是否已注释掉鉴权。

参考:https://blog.csdn.net/zwd926/article/details/89884089

原文地址:https://www.cnblogs.com/xuanqust/p/13502417.html