1 .簡介
自從 0.99.2 版本開始, pure-ftpd 就開始支持虛擬用戶。虛擬用戶方式十分類似 /etc/passwd ,將用戶的相關信息,如口令、姓名、 uid 、目錄等,存入文件。但是該文件只適用于 FTP 。
這意味著,可以為 FTP 設置虛擬用戶,而不需要在系統(tǒng)中添加系統(tǒng)用戶。同時,可以為這些用戶單獨設置配額、 ratio 、帶寬等限制。很多虛擬用戶可以共享同一個系統(tǒng)用戶的屬性,因此建議為這些虛擬用戶單獨創(chuàng)建一個系統(tǒng)用戶,從而方便管理。
首先,可以在系統(tǒng)中添加相應的用戶和組,如 ftpuser 和 ftpgroup 。如:
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
可以使用 ”pure-pw” 來創(chuàng)建虛擬用戶。虛擬用戶的信息以每個用戶一行的方式存放在相應的文件中,其格式如下所示:
<account>:<password>:<uid>:<gid>:<gecos>:<home directory>:<upload bandwidth>:<download bandwidth>:<upload ratio>:<download ratio>:<max number of connections>:<files quota>:<size quota>:<authorized local IPs>:<refused local IPs>:<authorized client IPs>:<refused client IPs>:<time restrictions>
其中,除了帳號、口令、 uid 、 gid 和 home 目錄之外,其它的可以是空值。
2 .創(chuàng)建一個用戶
接下來,我們來創(chuàng)建一個新的用戶。 pure-pw 的語法規(guī)范如下:
pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
????? -D/-d <home directory> [-c <gecos>]
????? [-t <download bandwidth>] [-T <upload bandwidth>]
????? [-n <max number of files>] [-N <max Mbytes>]
????? [-q <upload ratio>] [-Q <download ratio>]
????? [-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]...]
????? [-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]...]
???? ?[-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]...]
????? [-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]...]
????? [-y <max number of concurrent sessions>]
????? [-z <hhmm>-<hhmm>] [-m]
假設我們要創(chuàng)建 joe 這樣一個虛擬用戶,則可以使用如下命令:
pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe
其中, -u 將虛擬用戶 joe 同系統(tǒng)用戶 ftpuser 關聯(lián)在一起。 -d 參數(shù)使 joe 只能訪問其 home 目錄。而如果想讓他訪問整個文件系統(tǒng),可以用 -D 選項。
這時,如果 pure-ftpd 啟動時加入 -j(--createhome) 選項,則不需要創(chuàng)建 /home/ftpuser/joe 目錄。系統(tǒng)會在該用戶第一次登陸時自動創(chuàng)建。
-z 選項運用用戶在一天當中指定的時間段連接服務器。如 -z 0900-1800 ,則該用戶只能在上午 9 點到晚上 6 點之間連接服務器。
-r 選項或 -R 選項,可以限制用戶從指定 IP 和掩碼連入服務器
-y ,用戶同一時間的并發(fā)連接數(shù)。 ’’ 或者 0 意味著不限制
-f ,默認虛擬用戶的信息會被存放在 /etc/pureftpd.passwd 文件中,通過該選項可以改變該文件的位置。
用戶的口令會根據(jù)系統(tǒng)對加密方式的支持情況,選擇一個最安全的方式進行加密。
3 .更改一個用戶
同 pure-pw adduser 唯一不同的是,使用 pure-pw usermod 不是創(chuàng)建一個用戶,而是更改已經(jīng)存在用戶的某些屬性。
重置某些屬性的語法如下:
pure-pw usermod <user> -n '' :禁用文件配額
pure-pw usermod <user> -N '' :禁用文件大小配額
pure-pw usermod <user> -q '' -Q '' :禁用 ratio
pure-pw usermod <user> -t '' :禁用下載帶寬限制
pure-pw usermod <user> -T '' :禁用上傳帶寬限制
pure-pw usermod <user> <-i,-I,-r or -R> '' :禁用 IP 過濾
pure-pw usermod <user> -z '' :禁用時間段約束
pure-pw usermod <user> -y '' :禁用并發(fā)數(shù)限制
4 .刪除一個用戶
刪除一個用的命令語法是:
pure-pw userdel <login> [-f <passwd file>] [-m]
這時,用戶的信息會被從指定的 passwd 文件中刪除,但是用戶的 home 目錄會被保留,需要手工刪除。
5 .改變用戶口令
更改一個用戶口令的語法是:
pure-pw passwd <login> [-f <passwd file>] [-m]
6 .顯示用戶信息
/etc/pureftpd.passwd 文件中記錄的信息不方便用戶的閱讀,因此 pure-ftpd 提供了顯示用戶信息的命令。其語法是:
pure-pw show <login> [-f <passwd file>]
7 .提交更改
可以通過上面提到的命令,或者以手工方式對 /etc/pureftpd.passwd 文件進行修改,從而創(chuàng)建、修改和刪除一個虛擬用戶信息。但是,只有提交這些更改時, pure-ftpd 訪問才能生效。
提交更改,意味著系統(tǒng)會根據(jù) /etc/pureftpd.passwd (或者指定的其它文件)來創(chuàng)建一個 pure-ftpd 可讀的二進制格式的文件 /etc/pureftpd.pdb 。通常,通過下面的命令:
pure-pw mkdb
可以通過 /etc/pureftpd.passwd 文件自動創(chuàng)建 /etc/pureftpd.pbd 文件。但是,如果需要指定特定的文件,可以通過下面的方式來實現(xiàn):
pure-pw mkdb /etc/accounts/myaccounts.pdb -f /etc/accounts/myaccounts.txt
這時,沒有必要去重啟 pure-ftpd 服務,對虛擬用戶進行的更改可以更新。同時,也可以通過 -m 選項,在對 /etc/pureftpd.passwd 文件進行修改的時候自動進行提交。
8 .打開對虛擬用戶的支持
使得 pure-ftpd 支持虛擬用戶,需要在編譯的時候加入選項 --with-puredb 。這時,可以通過在啟動服務是的 ’-l’ 參數(shù)來設置。如:
/usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &
可以在后臺,以自動創(chuàng)建虛擬用戶 home 目錄,用 puredb 的方式來支持虛擬用戶。
9 .轉換系統(tǒng)用戶
可以通過如下命令,將系統(tǒng)用戶轉換為虛擬用戶:
pure-pwconvert
如果以 root 用戶運行該命令,系統(tǒng)用戶的口令一并被轉入虛擬用戶配置文件。如:
pure-pwconvert >> /etc/pureftpd.passwd
10 .環(huán)境變量
默認的情況下,如果指定了環(huán)境變量 PURE_PASSWDFILE ,則虛擬用戶的 passwd 文件位置由該變量的值指定。否則,默認是 /etc/pureftpd.passwd 。用樣, PURE_DBFILE 環(huán)境變量用來指定 pdb 文件的位置。默認是 /etc/pureftpd.pdb 。