RedHat/CentOS-7搭建FTP服务器

前言:本文以搭建vsftp为例进行。

1、安装vsftpd和lftp:

yum -y install vsftpd lftp

2、创建用户:

//创建用户
useradd -d /ftpfile -s /sbin/nologin test

//-d-->更改用户的家目录为/ftpfile
//-s /sbin/nologin --> 不让用户登录linux系统,只能以ftp方式登录

//设置密码
passwd test

3、新建chroot_list文件:

cd /etc/vsftp
vim chroot_list
//然后:wq保存文件即可

4、配置用户访问权限:

1)vsftpd.conf:

vim /etc/vsftpd/vsftpd.conf

//修改以下几项:

//禁用匿名登录,默认是启用
anonymous_enable=NO
//NO表示所有用户都可以跳出家目录,YES表示都不可以跳出,默认为都可以跳出
chroot_local_user=NO
//启用不可以跳出家目录的例外
chroot_list_enable=YES
//当chroot_local_user=NO时,chroot_list里面配置的用户不可以跳出家目录,当chroot_local_user=YES时,chroot_list里面配置的用户可以跳出家目录
chroot_list_file=/etc/vsftpd/chroot_list

//添加以下几项:

//NO表示所有用户均不可以登录ftp,YES表示所有用户均能访问ftp,默认是YES
userlist_deny=NO
//当userlist_deny=NO时,user_list是白名单,当userlist_deny=YES时,user_list是黑名单
userlist_file=/etc/vsftpd/user_list
//用户家目录可写,默认是只读的
allow_writeable_chroot=YES

注:allow_writeable_chroot=YES的作用:

如果设置了用户不能跳出家目录,那么在vsftp2.3版本之后要求家目录默认只能是只读的,此时如果家目录权限不是只读的,就不能登录,登录会报以下错误:Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()。

解决方法有两个,第一种就是在vsftpd.config里面添加allow_writeable_chroot=YES,第二是把家目录设置为只读:chmod a-w /ftpfile。推荐使用第一种方法。

2)chroot_list:

vim /etc/vsftpd/chroot_list
//添加test用户
test

3)user_list:

vim /etc/vsftpd/user_list
//添加test用户
test

4)vsftpd:

注:如果不修改vsftpd文件的配置,登录会报530错误:Login failed: 530 Login incorrect.

解决方式有两种,推荐使用第二种:

第一:注释auth   required        pam_shells.so;

vim /etc/pam.d/vsftpd
//注释以下配置:
auth   required        pam_shells.so

第二:pam_shells.so改为pam_nologin.so

扫描二维码关注公众号,回复: 5264737 查看本文章
vim /etc/pam.d/vsftpd
//修改配置,把pam_shells.so改为pam_nologin.so
auth   required        pam_nologin.so

5、修改selinux配置:

注:如果不修改selinux配置,登录会报500错误:vsftpd 500 OOPS: chroot,因为test用户的shell是nologin的。

有两种解决方式:第一关闭selinux,第二:修改ftp_full_access为on

第一:关闭selinux

vim /etc/selinux/config
SELINUX=disabled

第二:修改ftp_full_access为on

//获取selinux中ftpd的配置
getsebool -a | grep ftpd
//修改ftpd_full_access --> off为ftpd_full_access --> on
setsebool -P ftpd_full_access 1
//进入Enforcing模式
setenforce 1

6、重启:

reboot

7、添加防火墙端口:

默认是被动模式:

firewall-cmd --zone=public --add-port=21/tcp --permanent 开启21号端口 
firewall-cmd --zone=public --add-port=30000-40000/tcp --permanent 开启30000到40000的端口 
firewall-cmd --add-service=ftp --permanent 永久开放ftp服务
firewall-cmd --reload 重新加载防火墙

8、启动vsftpd服务:

systemctl start vsftpd.service 启动服务
systemctl stop vsftpd.service 停止服务
systemctl restart vsftpd.service 重启服务
systemctl enable vsftpd.service 开机自启
//查看自启列表
systemctl -l
systemctl -l | grep vsftpd

9、连接:

lftp username[:password]@ip[:port]
//如:
lftp test:[email protected]:21
//退出连接
exit

猜你喜欢

转载自blog.csdn.net/wqh0830/article/details/87743928