一、建立虚拟用户
vim /etc/vsftpd/vsuser
ftp1
centos
ftp2
linux
ftp3
Debain
转换成.db文件 【注意:必须是.db结尾】
db_load -T -t hash -f vsuser vsuser.db
为了安全起见,修改权限
chmod 600 vsuser.db
二、为虚拟用户创建系统账号(此步是为了让所有的虚拟用户都映射成系统账户)
useradd -d /app/ftpsite -s /sbin/nologin ftpuser
修改共享目录权限
chown +rx /app/ftpsite
Centos7需要去掉w权限
Chown -w /app/ftpsite
三、修改vsftpd的配置文件,添加系统账户和是否映射成系统账户
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES 是否映射成系统账号
guest_username=ftpvsuser 系统账户
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文件路径】
到此虚拟用户可以登录了。
只是想让不同的虚拟账号拥有不同的权限。
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vhosts.d 【加载用户配置文件路径】
mkdir /etc/vsftpd/vhosts.d 【创建出该路径】
四、ftp1拥有下载和上传权限
为了方便管理,不能把所有的文件都上传到家目录里,所以创建个目录
mkdir /app/ftpsite/share1
Setfacl -m u:ftpuser:rwx /app/ftpsite/share1 【让share1目录本身拥有权限】
Vim /etc/vsftpd/vhosts.d/ftp1 【文件名必须和创建的虚拟用户名保持一致】
anon_upload_enable=YES 开启上传
anon_mkdir_write_enable=YES 建文件夹
重启服务,实验结果。
此刻使用ftp2实验上传和下载
五、同时可以让ftp2登录共享文件夹时看到的和ftp1登录看到的不一样
vim /etc/vsftpd/vhosts.d/ftp2
local_root=/app/ftpsite/share2
mkdir /app/ftpsite/share2/f1 创建出该目录
测试:
重启服务
登录测试
后期相对ftp2做权限控制可以参照ftp1。至此,服务搭建完成。
本文转自 LUksl 51CTO博客,原文链接:http://blog.51cto.com/19940919/2059183