第一次成功后的配置文件:
#基础通用操作:参考的文章:(最后解决问题的不是他)
https://blog.csdn.net/dyw_666666/article/details/103172014
# 1. 创建目录
mkdir -p /var/www/html
# 2. 服务器端创建两个用户user1、user3,并禁止他们本地登录。
useradd -s /sbin/nologin user1
useradd -s /sbin/nologin user2
echo 123456 | passwd --stdin user1
echo 123456 | passwd --stdin user2
# 3. 在服务器端创建上传文件的文件夹并为该文件夹赋予其他用户读的权限
ls -l /var/www
chmod -R o+w /var/www/html
ls -l /var/www
# 4. 修改安全上下文,使上传根目录具有写入(上传)的功能
chcon -t public_content_rw_t /var/www/html
# 整体验证ok 但是 这条命令报错 没生效
# chcon: can't apply partial context to unlabeled file ‘/var/www/html’
切换至于vsftp配置文件目录
[root@python3 vsftpd]# pwd
/etc/vsftpd
[root@python3 vsftpd]# cat vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022 # 002可以让同组成员编辑
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/var/www/html
chroot_local_user=YES
#chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#userlist_enable=YES
allow_writeable_chroot=YES
userlist_deny=NO
[worker@python3 html]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin
[root@python3 vsftpd]# ls
chroot_list ftpusers user_list vsftpd.conf vsftpd.conf.bak vsftpd_conf_migrate.sh
[root@python3 vsftpd]# cat user_list
# ...
user1
root
bin
daemon
adm
centos7.6本地用户无法登录vsftp的解决方法 原文!!!:
https://blog.51cto.com/meiling/2622016
一、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 # 002 可以让同组的人可编辑
#用于指定用户列表文件中的用户不允许切换到上级目录。默认值为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两个参数
配置文件详细说明:
补充一:/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
我是绿色