最近需要在linux中搭建ftp服务,之前都是在windows中搭建,linux从未搭建过,0racle-linux7.9搭建ftp过程如下:
一、安装vsftp包
1、在线安装(服务器能够联网)
yum install -y vsftpd
2、离线安装(服务不能联网)
安装包下载地址:https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/index.html
选择需要的安装包下载,并传到linux系统中。
安装命令:rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm
二、ftp服务启动、重启、停止
启动:systemctl start vsftpd.service
停止:systemctl stop vsftpd.service
重启:systemctl restart vsftpd.service
创建一个账户登录ftp,只能登录ftp,不能通过ssh登录到linux系统。
创建用户:adduser ftptest
修改密码:passwd ftptest
创建目录:mkdir /var/ftp/test
更改/var/ftp/test目录的拥有者为ftptest
chown -R ftptest:ftptest /var/ftp/test
修改ftptest账户不能ssh登录linux账户
usermod-s /sbin/nologin ftptest
此时ftpuser是登录不了ssh了,但是同时也无法登录Ftp,但其他账户可以登录ftp。网上查了很多资料,发现还需要将/etc/pam.d/vsftpd中的auth required pam_shells.so修改为auth required pam_nologin.so
完成后重启vsftpd。
systemctl restart vsftpd
三、修改vsftpd.conf配置文件。
运行以下命令,修改配置文件/etc/vsftpd/vsftpd.conf。
vim /etc/vsftpd/vsftpd.conf
修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES
#设置本地用户登录后所在目录。
local_root=/var/ftp/test
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list
排查
问题1
报错截图:
原因:ftp服务无法读取:/etc/vsftpd/下的这个文件chroot_list,默认不会创建这个文件,需要我们手动到目录下创建。
解决方案:进入目录并创建文件
报错截图
原因:selinux未关闭
Selinux关闭两种方式,1是永久关闭要重启。2是临时关闭,不要重启
1、sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
修改后要重启生效
2、setenforce 0
临时关闭,不要重启。
自此可以成功登陆