一、建立虚拟用户

vim /etc/vsftpd/vsuser

ftp1

centos

ftp2

linux

ftp3

Debain

centos 修改FTP用户名权限目录 centos设置ftp账号_centos 修改FTP用户名权限目录


转换成.db文件 【注意:必须是.db结尾】

db_load -T -t hash -f vsuser vsuser.db

centos 修改FTP用户名权限目录 centos设置ftp账号_开发工具_02


为了安全起见,修改权限

chmod 600 vsuser.db

二、为虚拟用户创建系统账号(此步是为了让所有的虚拟用户都映射成系统账户)

useradd -d /app/ftpsite -s /sbin/nologin ftpuser

centos 修改FTP用户名权限目录 centos设置ftp账号_开发工具_03


修改共享目录权限

chown +rx /app/ftpsite

centos 修改FTP用户名权限目录 centos设置ftp账号_centos 修改FTP用户名权限目录_04


Centos7需要去掉w权限

Chown -w /app/ftpsite

centos 修改FTP用户名权限目录 centos设置ftp账号_虚拟用户_05


三、修改vsftpd的配置文件,添加系统账户和是否映射成系统账户

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES 是否映射成系统账号

guest_username=ftpvsuser 系统账户

centos 修改FTP用户名权限目录 centos设置ftp账号_虚拟用户_06


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文件路径】

centos 修改FTP用户名权限目录 centos设置ftp账号_centos 修改FTP用户名权限目录_07


到此虚拟用户可以登录了。

只是想让不同的虚拟账号拥有不同的权限。

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vhosts.d 【加载用户配置文件路径】

mkdir /etc/vsftpd/vhosts.d 【创建出该路径】

centos 修改FTP用户名权限目录 centos设置ftp账号_虚拟用户_08


四、ftp1拥有下载和上传权限

为了方便管理,不能把所有的文件都上传到家目录里,所以创建个目录

mkdir /app/ftpsite/share1

Setfacl -m u:ftpuser:rwx /app/ftpsite/share1 【让share1目录本身拥有权限】

centos 修改FTP用户名权限目录 centos设置ftp账号_上传_09


Vim /etc/vsftpd/vhosts.d/ftp1 【文件名必须和创建的虚拟用户名保持一致】

anon_upload_enable=YES 开启上传

anon_mkdir_write_enable=YES 建文件夹 

centos 修改FTP用户名权限目录 centos设置ftp账号_开发工具_10


重启服务,实验结果。

centos 修改FTP用户名权限目录 centos设置ftp账号_vim_11


此刻使用ftp2实验上传和下载

centos 修改FTP用户名权限目录 centos设置ftp账号_开发工具_12


五、同时可以让ftp2登录共享文件夹时看到的和ftp1登录看到的不一样

vim /etc/vsftpd/vhosts.d/ftp2
 local_root=/app/ftpsite/share2
 mkdir /app/ftpsite/share2/f1 创建出该目录

centos 修改FTP用户名权限目录 centos设置ftp账号_开发工具_13


测试:

重启服务

centos 修改FTP用户名权限目录 centos设置ftp账号_vim_14


登录测试

centos 修改FTP用户名权限目录 centos设置ftp账号_vim_15


后期相对ftp2做权限控制可以参照ftp1。至此,服务搭建完成。