一、centos7.6搭建ftp服务器,本地用户登录
(一)、安装vsftpd服务安装vsftpd
$yum install -y vsftpd
启动vsftpd
$systemctl start vsftpd.service
设置开机启动
$systemctl enable vsftpd.service
查看服务状态和端口(默认端口是21)
$systemctl status vsftpd.service
$netstat -nltp | grep 21
(二)、配置
2.1、配置目录 /etc/vsftpd/etc/vsftpd目录有三个配置文件
vsftpd.conf:主配置文件
ftpusers:禁止访问ftp服务器的用户列表,一行一个账号(黑名单)
user_list:用户访问控制文件,一行一个账号(白名单)
2.2、关闭匿名访问和禁止切换根目录编辑/etc/vsftpd/vsftpd.conf文件:
#禁用匿名用户
anonymous_enable=no
#允许本地用户
local_enable=YES
#禁止本地用户切换ftp根目录
local_root=/web/test
#允许登陆用户有写权限
write_enable=YES
# 设置权限掩码,上传文件时的默认权限
local_umask=022
#用于指定用户列表文件中的用户不允许切换到上级目录。默认值为NO。
#将所有用户限定在主目录内
chroot_local_user=YES
#被动模式指定端口范围
pasv_min_port=1025
pasv_max_port=1099
[ pasv_enable=yes默认是开启的,但是要指定一个端口范围表示端口范围为1025~1099 ]
(三)、创建FTP用户创建本地用户ftptest,用于登陆ftp,且禁止ftptest用户直接登陆服务器(登录后默认的路径为/home/ftptest)
$useradd ftptest -s /sbin/nologin
设置ftptest用户的密码
$passwd ftptest
把用户添加到/etc/vsftpd/user_list文件,一行一个账号
增加允许访问的用户ftptest
重启vsftpd服务
$systemctl restart vsfftpd.service
二、centos7.6本地用户无法登录vsftp的解决方法
以上安装并配置相关vsftpd服务后,测试登录时本地用户无法登录报530 Permission denied.
(测试过匿名用户登录正常没有问题)
解决办法如下:
方法一(用此方法即可的,看自己需求):
1、在/etc/shells文件里面添加用户的shell(解释器),添加/sbin/nologin参数
原因:vsftpd默认会检查用户的shell,如果用户的shell在/etc/shells没有记录,则无法登陆ftp
2、/etc/vsftpd/vsftpd.conf ,添加allow_writeable_chroot=YES参数
3、给主目录的其它用户写权限即可,chmod o+w /web/test/
方法二:用user_list文件定白名单
1、/etc/shells,添加/sbin/nologin 参数
2、/etc/vsftpd/user_list,添加你创建的用户如:ftptest
3、/etc/vsftpd/vsftpd.conf,添加userlist_deny=NO和allow_writeable_chroot=YES两个参数
三、加入防火墙规则#防火墙添加端口
firewall-cmd --zone=public --permanent --add-port=21/tcp
firewall-cmd --zone=public --permanent --add-port=1025-1099/tcp
firewall-cmd --reload
补充一:/etc/shells文件的作用
a.统某些服务在运行过程中,回去检查用户使用的shells,而这些shell查询就是借助/etc/shells这个文件。
b.修改该文件不会影响用户登陆服务器主机的权限,该文件提供给解释器给系统的某些服务判断一个用户是否是有效用户,
例如我创建的ftp用户解释器为/sbin/nologin,我系统的/etc/shells文件里面没有添加/sbin/nologin,所以我创建的ftp用户登陆不了ftp服务,
后面将/sbin/nologin添加进/etc/shells文件,则问题解决。
补充二:vsftpd.user_list:位于/etc/vsftpd目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,
仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。默认是YES,代表这个配置文件生效
我们在这里 如果只想让这里面的用户登录到FTP 需要添加 userlist_deny=NO 参数这个参数=NO 代表 这个配置信息的用户可以访问FTP
补充三:ftpuser文件与user_list 的文件
当ftpuser文件配置了用户,代表这些用户不允许访问,即使当user_list添加了这个用户也不允许访问
补充四:userlist_enable和userlist_deny参数
userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在
user_list文件中的用户这三类用户集合进行的设置。
当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,
本地全体用户(除去ftpusers中的用户)都可以登入FTP
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);
另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous