前言:本文以搭建vsftp为例进行。
1、安装vsftpd和lftp:
复制代码
1yum -y install vsftpd lftp ftp
2、创建用户:
vsftpd提供了三种认证方式:本地用户、虚拟用户、匿名用户,本文介绍本地用户的认证方式。
注:本文创建的本地用户为只能访问ftp,不可以登录linux。
复制代码
1
2
3
4
5
6
7
8#创建用户 useradd -d /ftpfile -s /sbin/nologin test #-d-->更改用户的家目录为/ftpfile #-s /sbin/nologin --> 不让用户登录linux系统,只能以ftp方式登录 #设置密码 passwd test
3、新建chroot_list文件:
复制代码
1
2
3cd /etc/vsftpd #新建chroot_list文件 touch chroot_list
4、配置用户访问权限:
1)vsftpd.conf:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21vim /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:
复制代码
1
2
3vim /etc/vsftpd/chroot_list #添加test用户 test
3)user_list:
复制代码
1
2
3vim /etc/vsftpd/user_list #添加test用户 test
4)vsftpd:
注:如果不修改vsftpd文件的配置,登录会报530错误:Login failed: 530 Login incorrect.
解决方式有两种,推荐使用第二种:
第一:注释auth required pam_shells.so;
复制代码
1
2
3vim /etc/pam.d/vsftpd #注释以下配置: auth required pam_shells.so
第二:pam_shells.so改为pam_nologin.so
复制代码
1
2
3vim /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
复制代码
1
2vim /etc/selinux/config SELINUX=disabled
第二:修改ftp_full_access为on
复制代码
1
2
3
4
5
6#获取selinux中ftpd的配置 getsebool -a | grep ftpd #修改ftpd_full_access --> off为ftpd_full_access --> on setsebool -P ftpd_full_access 1 #进入Enforcing模式 setenforce 1
6、重启:
复制代码
1reboot
7、添加防火墙端口:
默认是被动模式:
复制代码
1
2
3
4
5
6
7
8#开启21号端口 firewall-cmd --zone=public --add-port=21/tcp --permanent #开启30000到40000的端口 firewall-cmd --zone=public --add-port=30000-40000/tcp --permanent #永久开放ftp服务 firewall-cmd --add-service=ftp --permanent #重新加载防火墙 firewall-cmd --reload
8、启动vsftpd服务:
复制代码
1
2
3
4
5
6
7
8
9
10
11#启动服务 systemctl start vsftpd.service #停止服务 systemctl stop vsftpd.service #重启服务 systemctl restart vsftpd.service #开机自启 systemctl enable vsftpd.service #查看自启列表 systemctl -l systemctl -l | grep vsftpd
9、连接:
1、使用lftp:
复制代码
1
2
3
4
5lftp username[:password]@ip[:port] #如: lftp test:123456@192.168.1.30:21 #退出连接 exit
2、使用ftp:
最后
以上就是纯情老虎最近收集整理的关于RedHat/CentOS-7搭建FTP服务器的全部内容,更多相关RedHat/CentOS-7搭建FTP服务器内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复