虚拟用户:
所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
虚拟用户帐号的存储方式:
文件:编辑文本文件,此文件需要被编码为hash格式
奇数行为用户名,偶数行为密码
db_load -T -t hash -f vusers.txt vusers.db
关系型数据库中的表中:
实时查询数据库完成用户认证
mysql库:pam要依赖于pam-mysql
/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7/README
一、创建用户数据库文件
vim /etc/vsftpd/vusers.txt
ftpuser1
centos
ftpuser2
China123
cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db
chmod 600 vusers.db
二、创建用户和访问FTP目录
useradd -d /var/ftproot -s /sbin/nologin vuser
chmod a=rx /var/ftproot/
centos7 还需要执行以下操作:
chmod -w /var/ftproot/
mkdir /var/ftproot/upload
setfacl -m u:vuser:rwx /var/ftproot/upload
三、创建pam配置文件
vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
这个意思表示调用验证模块pam_userdb.so 验证的时候是由这个文件定义的
/etc/vsftpd/vusers
,文件名vsftp.db可以自定义,vusers
写的时候可以不带后缀,目前配置文件中还没有调用我们刚刚新建的vsftpd.db 模块
四、指定pam配置文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.db
guest_enable=YES
guest_username=vuser
guest_enable=YES
,guest_username=vuser
这两行表示将操作系统用户映射成vuser,pam_service_name=vsftpd.db
这行就表示使用第三步的配置文件
通过ftp测试,报错如下的话,是因为ftp不能运行在一个可写的根上,就是根目录不能有写权限
ftp 192.168.1.7
Connected to 192.168.1.7 (192.168.1.7).
220 (vsFTPd 3.0.2)
Name (192.168.1.7:root): ftpuser1
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
chmod 555 /var/ftproot/
#这行只是不能对/var/ftproot/这个有写权限,可以直接新建个目录,这样就可以了。
修改权限为555表示所有人只有读和执行权限,没有写的权限
这里的根不是真正的系统根,而是用户的家目录,将用户的家目录映射成根,在这里其他用户,登录进去看到的文件和权限都是一样的,
创建upload 文件夹,并对其设置vuser 用户,读写执行权限
mkdir upload
setfacl -m u:vuser:rwx upload
对每个用户授权不同的访问权限
1、修改配置文件
vim /etc/vsftpd/vsftpd.conf
2、
user_config_dir=/etc/vsftpd/vusers.d/
这行表示每个用户有独有的配置文件,配置文件,存放在/etc/vsftpd/vusers.d/这个下,
3、创建配置文件存放位置
mkdir /etc/vsftpd/vusers.d
4、新建文件,和虚拟用户名一样
vim ftpuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
这里给的权限是能上传和下载的,而ftpuser2 我是没有创建文件,所以还是和之前的权限一样,只能下载,不能上传
5、重启vsftpd服务
systemctl restart vsftpd
对每个用户登录之后,查看到的目录各不相同
1、新建一个文件夹,
mkdir /var/ftproot2
2、新建一个ftpuser2的配置文件
vim ftpuser2
local_root=/var/ftproot2
登录目录改变至指定的目录