一、建立虚拟用户
vim /etc/vsftpd/vsuser
ftp1
centos
ftp2
linux
ftp3
Debain

转换成.db文件 【注意:必须是.db结尾】
db_load -T -t hash -f vsuser vsuser.db
实现centos7下对ftp服务器账户权限的控制
为了安全起见,修改权限
chmod 600 vsuser.db
二、为虚拟用户创建系统账号(此步是为了让所有的虚拟用户都映射成系统账户)
useradd -d /app/ftpsite -s /sbin/nologin ftpuser
实现centos7下对ftp服务器账户权限的控制
修改共享目录权限
chown +rx /app/ftpsite
实现centos7下对ftp服务器账户权限的控制
Centos7需要去掉w权限
Chown -w /app/ftpsite
实现centos7下对ftp服务器账户权限的控制
三、修改vsftpd的配置文件,添加系统账户和是否映射成系统账户
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES 是否映射成系统账号
guest_username=ftpvsuser 系统账户
实现centos7下对ftp服务器账户权限的控制_第1张图片
pam_service_name=vsuser 【pam配置文件名称。原本是vsftp】

创建文件名称
vim /etc/pam.d/vsuser
auth required pam_userdb.so db=/etc/vsftpd/vsuser
account required pam_userdb.so db=/etc/vsftpd/vsuser 【此两行路径是创建虚拟用户数据的文件路径,即vsuser.db文件路径】
实现centos7下对ftp服务器账户权限的控制_第2张图片
到此虚拟用户可以登录了。
只是想让不同的虚拟账号拥有不同的权限。
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vhosts.d 【加载用户配置文件路径】
mkdir /etc/vsftpd/vhosts.d 【创建出该路径】
实现centos7下对ftp服务器账户权限的控制
四、ftp1拥有下载和上传权限
为了方便管理,不能把所有的文件都上传到家目录里,所以创建个目录
mkdir /app/ftpsite/share1
Setfacl -m u:ftpuser:rwx /app/ftpsite/share1 【让share1目录本身拥有权限】
实现centos7下对ftp服务器账户权限的控制_第3张图片
Vim /etc/vsftpd/vhosts.d/ftp1 【文件名必须和创建的虚拟用户名保持一致】
anon_upload_enable=YES 开启上传
anon_mkdir_write_enable=YES 建文件夹
实现centos7下对ftp服务器账户权限的控制
重启服务,实验结果。
实现centos7下对ftp服务器账户权限的控制_第4张图片
此刻使用ftp2实验上传和下载
实现centos7下对ftp服务器账户权限的控制_第5张图片
五、同时可以让ftp2登录共享文件夹时看到的和ftp1登录看到的不一样
vim /etc/vsftpd/vhosts.d/ftp2
local_root=/app/ftpsite/share2
mkdir /app/ftpsite/share2/f1 创建出该目录
实现centos7下对ftp服务器账户权限的控制_第6张图片
测试:
重启服务
实现centos7下对ftp服务器账户权限的控制
登录测试
实现centos7下对ftp服务器账户权限的控制_第7张图片
后期相对ftp2做权限控制可以参照ftp1。至此,服务搭建完成。