虛擬用戶: 不存在於操作系統中,而是專門給對應服務使用的賬號。 虛擬用戶的家目錄: 所有虛擬用戶會統一映射為一個指定的系統帳號:訪問共用位置,即為此統帳號的家目錄 虛擬用戶的許可權: 各虛擬用戶可被賦予不同的訪問許可權,通過匿名用戶的許可權控制參數進行指定 例如:mysql的虛擬用戶就是存放在mysql. ...
虛擬用戶:
不存在於操作系統中,而是專門給對應服務使用的賬號。
虛擬用戶的家目錄:
所有虛擬用戶會統一映射為一個指定的系統帳號:訪問共用位置,即為此統帳號的家目錄
虛擬用戶的許可權:
各虛擬用戶可被賦予不同的訪問許可權,通過匿名用戶的許可權控制參數進行指定
例如:mysql的虛擬用戶就是存放在mysql.user這張表裡面
虛擬用戶賬號的存儲方式:
-
存放在磁碟文件中
-
存放在資料庫中
範例:實現使用文件存儲vsftp的用戶信息
實現原理:
(1) 首先創建一個普通的文本文件,奇數行存用戶名,偶數行存密碼。然後使用特定的工具將這個文本文件轉為Berkeley DB database這種格式的特殊文件。
(2) 二進位格式的文件創建完成後,ftp本身不支持使用文件存放虛擬用戶名和密碼,但是ftp支持pam,以及藉助pam來實現文本存放用戶名和密碼。
(3) pam模塊中的pam_userdb模塊支持DB這種格式的文件存放用戶信息。(pam:是一個通用的、可插拔的驗證模塊)
pam_userdb模塊的作用:校驗存放在xx格式文件中的用戶名和密碼
將本文格式轉換為DB格式的工具:db_load
軟體包:ibdb-utils-5.3
作用:將文本文件工具轉化為二進位文件
實現步驟:
1.創建對應的文件存放虛擬用戶賬號密碼
[root@CentOS8 vsftpd]# vim users
xiaoming #用戶名
redhat #密碼
xiaohong
redhat11
#把文本文件轉花紋二進位的db格式文件
[root@CentOS8 vsftpd]# db_load -T -t hash -f /etc/vsftpd/users users.db
[root@CentOS8 vsftpd]# file users.db
users.db: , created: Thu Jan 1 00:34:08 1970
#添加許可權 增加安全性
[root@CentOS8 vsftpd]# chmod 600 users.db
2.創建系統用戶
-
虛擬用戶不是操作系統上的賬號,訪問磁碟文件時無許可權,相當於others用戶,所以需要給虛擬用戶相關的許可權。
-
創建一個針對虛擬用戶映射的操作系統賬號,虛擬賬號通過這個系統賬號,間接獲取到訪問磁碟的許可權。
#創建一個系統用戶, -d:指定家目錄 -s:指定使用的shell -r:表示創建一個系統用戶
[root@CentOS8 ~]# useradd -d /data/ftproot -s /sbin/nologin -r vuser
#創建系統用戶的家目錄
[root@CentOS8 ~]# mkdir -p /data/ftproot
#創建一個目錄,用於給用戶上傳文件
[root@CentOS8 ~]# mkdir -pv /data/ftproot/upload
#給用戶賦予許可權
[root@CentOS8 ~]# setfacl -m u:vuser:rwx /data/ftproot/upload
3.創建pam的配置文件
通過pam_user模塊,根據這個模塊來驗證db格式文件中的賬號密碼。
[root@CentOS8 pam.d]# cat /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/users
account required pam_userdb.so db=/etc/vsftpd/users
4.指定pam的配置文件
[root@CentOS8 pam.d]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES #將所有系統賬號都映射成guest用戶
guest_username=vuser #映射成操作系統的賬號名
pam_service_name=vsftpd.db #不用寫路徑,能自動找到
5.測試
[root@CentOS8 ~]# ftp 10.0.0.11
Connected to 10.0.0.11 (10.0.0.11).
220 (vsFTPd 3.0.3)
Name (10.0.0.11:root): xiaoming
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (10,0,0,11,52,103).
150 Here comes the directory listing.
drwxrwxr-x 2 0 0 4096 Oct 21 08:21 upload
226 Directory send OK.
ftp>
註意許可權問題:
1.服務自身的許可權
2.文件系統的許可權