centos7 安装vsftpd和配置虚拟用户访问及权限分配

系统环境 centos7.3 版本

ftp 根目录 : /data/ftp
ftp 配置文件目录:/etc/vsftpd
ftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config

实现目标:

1,匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录
2,虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作


1,安装vsftpd和db_load加密工具

#要关闭selinux 和防火墙或者开启允许的端口,不然访问会有问题
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #修改配置文件
setenforce 0  #临时关闭
systemctl stop firewalld.service #关闭防火墙

yum install vsftpd db4-utils -y

2,创建本地用户[用于映射虚拟用户]

#建立ftp用户目录
mkdir -p /data/ftp
#创建用户
useradd -d /data/ftp vuser -s /sbin/nologin
更改权限和主组权限
chmod 755 /data/ftp
chown vuser.root /data/ftp

3,创建虚拟用户[用户和密码]文件

vim /etc/vsftpd/vuser-list
jin [用户名]
123456 [密码]
jinc [用户名]
123123 [密码]

4,加密用户密码文件生成数据库文件

cd /etc/vsftpd/
db_load -T -t hash -f ./vuser-list ./vuser-list.db
chmod 600 vuser-list.db 

5,创建PAM认证文件

vim /etc/pam.d/vuser.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list    #注意64位系统写/lib64这个路径,32位系统要写成/lib,下同!
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list

6,修改配置文件

vim /etc/vsftpd/vsftpd.conf

#允许匿名用户访问
anonymous_enable=yes

local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES

listen=NO
listen_ipv6=YES

#修改ftp默认目录到/data/ftp下面
chroot_local_user=YES
local_root=/data/ftp
anon_root=/data/ftp

#pam认证文件
pam_service_name=vuser.vu

#虚拟用户权限配置目录
user_config_dir=/etc/vsftpd/vuser_config

userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
one_process_model=NO

#开启虚拟用户
guest_enable=YES
guest_username=vuser

重启vsftpd服务
systemctl restart vsftpd.service

7,创建虚拟用户[权限]配置文件

cd /etc/vsftpd/vuser_config
vim jin [有所有权限]
local_root=/data/ftp/jin #设置登录后禁锢的目录
write_enable=yes #开放写权限
anon_world_readable_only=no #开放下载权限
anon_upload_enable=yes #开放上传权限
anon_mkdir_write_enable=yes #开放创建目录的权限
anon_other_write_enable=yes #开放删除和重命名的权限

vim jinc [只有上传下载的权限]
local_root=/data/ftp/jinc
anon_upload_enable=yes
anon_world_readable_only=no

8,更改虚拟用户目录权限

#如果不更改的话,匿名用户是可以访问到的
chmod 700 jin 
chmod 700 jinc

9,访问测试:[先在用户文件夹中建个测试的文件夹或文件,方便识别]

匿名访问

centos7 安装vsftpd和配置虚拟用户访问及权限分配

登录jin 用户访问:

centos7 安装vsftpd和配置虚拟用户访问及权限分配

登录jinc 用户访问:

centos7 安装vsftpd和配置虚拟用户访问及权限分配

 


错误1:226 Transfer done (but failed to open directory)
解决:selinux 和防火墙导致

错误2:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决:配置文件中加入 allow_writeable_chroot=YES 针对标准vsftpd(standonly)模式, 然后重启ftp

 

分享