繼續上章vsftpd,介紹vsftpd的虛擬用戶配置
一、背景需求
當有多個用戶需要不同的權限時,本地用戶、匿名用戶都無法控制那麼精細,這時候可以考慮下虛擬用戶了,例如有如下要求。
家目錄 | 讀 | 寫 | 刪除 | 是否允許切換目錄 | |
---|---|---|---|---|---|
tom | /myftp/tom | √ | × | × | × |
jerry | /myftp/jerry | √ | √ | × | × |
admin | /myftp | √ | √ | √ | √ |
二、詳細配置
```
a. 安裝程序:
[root@node1 ~]# yum -y install vsftpd
b. 創建配置文件:
[root@node1 ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
[root@node1 ~]# vim /etc/vsftpd/vsftpd.conf
#關閉匿名用戶,本地用戶必須開啓,否則虛擬用戶無法正常運行
anonymous_enable=NO
local_enable=YES
write_enable=YES
#設置禁錮用戶,默認開啓後/etc/vsftpd/chroot_list文件中的用戶都被禁錮
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#設置虛擬用戶相應功能(虛擬用戶對應的本地用戶、
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.pam
user_config_dir=/etc/vsftpd/vuser_conf.d
#設置數據連接(被動模式)的端口範圍
pasv_min_port=30000
pasv_max_port=30999
#關閉反向域名解析,用於加速訪問
reverse_lookup_enable=NO
c.創建pam認證文件,並指定虛擬用戶的賬號、密碼數據庫位置
注意:如果是32位的系統pam_userdb.so模塊不在lib64目錄下,詳情可通過 rpm -ql pam | grep userdb 得知
[root@node1 ~]# vim /etc/pam.d/vsftpd.pam
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
d.創建用戶密碼數據庫,奇數行位用戶名、偶數行位密碼
[root@node1 ~]# vim /etc/vsftpd_login
tom
123
jerry
123
admin
123
[root@node1 ~]# db_load -t hash -T -f /etc/vsftpd_login /etc/vsftpd_login.db
e.爲每個虛擬用戶創建不同的權限
[root@node1 ~]# mkdir /etc/vsftpd/vuser_conf.d
#TOM用戶權限設置:
[root@node1 ~]# vim /etc/vsftpd/vuser_conf.d/tom
local_root=/myftp/tom
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
[root@node1 ~]# mkdir /myftp/tom
[root@node1 ~]# touch /myftp/tom/tom.read
#Jerry用戶權限配置:
[root@node1 ~]# cp /etc/vsftpd/vuser_conf.d/{tom,jerry}
[root@node1 ~]# vim /etc/vsftpd/vuser_conf.d/jerry
local_root=/myftp/jerry
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
[root@node1 ~]# mkdir /myftp/jerry
[root@node1 ~]# touch /myftp/jerry/jerry.read.write
#Admin用戶權限配置:
[root@node1 ~]# cp /etc/vsftpd/vuser_conf.d/{jerry,admin}
[root@node1 ~]# vim /etc/vsftpd/vuser_conf.d/admin
local_root=/myftp/tom
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@node1 ~]# mkdir /myftp/admin
[root@node1 ~]# touch /myftp/admin/admin.read.write.delete.no_chroot
#禁錮用戶
[root@node1 ~]# vim /etc/vsftpd/chroot_list
tom
jerry
#設置目錄權限
[root@node1 ~]# chown virtual -R /myftp/
#重啓服務
[root@node1 ~]# !sys
systemctl restart vsftpd
三、測試效果
Tom用戶測試結果:
Jerry用戶測試結果:
Admin用戶測試結果:
Admin用戶也被禁錮了...