Pure-Ftp 看樣子要多多了解了

取自小紅帽技術論壇
http://www.redhat.idv.tw/bbs/showthread.php?threadid=32112




pure-ftpd之三
=====================================================================虛擬使用者
參考:
README.Virtual-Users

環境:FreeBSD 4.6

虛擬使用者是一個很簡易的機制,用來儲存使用者名單、密碼、uid、目錄等等…它有些類似/etc/passwd,不過是另外一個檔案,只有FTP使用。

也就是你可以建立FTP專用帳號,而不必動用系統帳號。

另外,虛擬使用者檔案可以儲存個別的配額、上下傳比率、頻寬等等。系統帳號無法做到這些。

上千個虛擬使用者可以共用相同的系統使用者,只要他們全都被chrooted,而且他們會有自己的家目錄。

在使用虛擬使用者這樣的好東西之前要先建一個系統帳號。當然也可以用任一像"nobody"這類現成的帳號,但是最好用專屬的帳號。

先建立一個"ftpgroup"群組及一個"ftpuser"使用者。

# pw groupadd ftpgroup
# pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc

然後,所有虛擬使用者的維護都可用"pure-pw"命令達成。你也可以自行編輯那些檔案。

儲存虛擬使用者的檔案是每一位使用者儲存一行,像這樣的語法:
:::::::::::::::::

欄位可以空白,除了帳號、密碼、uid, gid,家目錄

密碼與/etc/passwd或/etc/master.passwd的加密方式是相容的。依你的系統的支援狀況,使用加密方式的使用順序是:blowfish, md5, multiple-des及simple des。


------------------------ 建立一位新使用者 ------------------------

新增使用者,用下列的語法:
pure-pw useradd [-f ] -u [-g ]
-D/-d [-c ]
[-t ] [-T ]
[-n ] [-N ]
[-q ] [-Q ]
[-r [/][,[/]]...]
[-R [/][,[/]]...]
[-i [/][,[/]]...]
[-I [/][,[/]]...]
[-y ]
[-z -] [-m]

建立一個"joe",他的家目錄是 /home/ftpusers/joe 。與"joe"相關的系統帳號是"ftpuser"

pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe

會問兩次Joe的密碼。

使用 -d ,joe會被chrooted。如果要讓joe存取整個檔案系統,改用 -D。

如果你用-j選項來執行pure-ftpd,可以不用建立 /home/ftpusers/joe 目錄。當使用這選項,在使用者第一次登入時,他的家目錄會自動建立起來。

"-z"選項只允許使用者在某段時間可以連線。如-z 0900-1800,joe只能在早上九點至下午六點之間可以連線。警告:在許可時間連線的使用者可以在許可時間之後才斷線。

-r 及-R可限制使用者的連線所在來源。後面可以加上簡單的IP/mask,如(-r 192.168.1.0/24),多組時用","分開,如(-r 192.168.1.0/24,10.1.0.0/16,127.0.0.1/32),單一IP(-r 192.168.1.4,10.1.1.5),主機名稱(-r bla.bla.net,yopcitron.com),或像這樣的任何組合。

-y用來限制一個使用者的同時連線數。0表示不限制。在很忙錄的主機上避免用此項。用per-ip的限制來取代。

"joe"這帳號已建好了。虛擬使用者的名單預設是存在 /etc/pureftpd.passwd 這檔案(你也可以用-f 來更改)。

看一下內容:

joe:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftpusers/joe/./:::::::::::::

密碼是依你系統所支援的最佳加密方式所做的。會依這種順序來使用:Blowfish, MD5, multiple DES, simple DES.


------------------------ 更改資訊 ------------------------

虛擬使用者一旦建好,你可以編輯他們的資訊。如增加頻寬節流、更改配額…

"pure-pw usermod"命令的作用就像"pure-pw useradd",不同的是它用來修改現有的帳號。

例如,為Joe加上配額,讓他的限制為1000個檔案及10 MB。

pure-pw usermod joe -n 1000 -N 10

看一下 /etc/pureftpd.passwd :

joe:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftpusers/joe/./::::::1000:10485760::::::

變更的已經存進去了

------------------------ reset屬性RESETTING ATTRIBUTES ------------------------


禁用檔案數配額:pure-pw usermod -n ''
禁用檔案大小配額:pure-pw usermod -N ''
禁用上下傳比率:pure-pw usermod -q '' -Q ''
禁用下載頻寬節流:pure-pw usermod -t ''
禁用上傳頻寬節流:pure-pw usermod -T ''
禁用IP過濾:pure-pw usermod <-i,-I,-r or -R> ''
禁用時間限制:pure-pw usermod -z ''
禁用同時連線數:pure-pw usermod -y ''

------------------------ 刪除使用者 ------------------------


語法:

pure-pw userdel [-f ] [-m]

如:刪除Joe

pure-pw userdel joe

他的家目錄會保留。要的刪話需自行刪除。

------------------------ 改更密碼 ------------------------

用"pure-pw passwd" :

pure-pw passwd [-f ] [-m]


------------------------ 顯示資訊 ------------------------

要檢示使用者的資訊,是可以直接讀取 /etc/pureftpd.passwd 檔案,但是不易閱讀。

用"pure-pw show",語法是:

pure-pw show [-f ]

試一下joe:

pure-pw show joe


Login : joe
Password : $1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.
UID : 500 (ftpuser)
GID : 101 (ftpgroup)
Directory : /home/ftpusers/joe/./
Full name :
Download bandwidth : 0 Kb (unlimited)
Upload bandwidth : 0 Kb (unlimited)
Max files : 1000 (enabled)
Max size : 10 Mb (enabled)
Ratio : 0:0 (unlimited:unlimited)
Allowed local IPs :
Denied local IPs :
Allowed client IPs : 192.168.0.0/16
Denied client IPs : 192.168.1.1,blah.verybadhost.com
Time restrictions : 0900-1800 (enabled)
Max sim sessions : 0 (unlimited)


在家目錄後的"/./"表示這名使用者會被chrooted。


------------------------ 提交(COMMITING)變更 ------------------------


重要:

你可以用上述命令新增、修改、刪除使用者,或自行編輯/etc/pureftpd.passwd。但是FTP Server並不會知道有所改變,直到你提交變更。

提交變更實際的意思是從/etc/pureftpd.passwd(或你選的檔案名)產生一個新的檔案。此新檔案是一個PureDB檔案。它與其它檔案都存一樣的資訊。但是在這檔案中,帳號被排序與索引,即使有上千個帳號都能以較快的速度存取。它是二進位檔。
從/etc/pureftpd.passwd建立一個PureDB檔案。索引檔稱為/etc/pureftpd.pdb(可以選你要的名稱)

pure-pw mkdb

預設情況,這樣會讀取 /etc/pureftpd.passwd 並建立 /etc/pureftpd.pdb。若要讀其它檔案,加到pdb檔中,在後面加上 -f

例如:

pure-pw mkdb /etc/accounts/myaccounts.pdb -f /etc/accounts/myaccounts.txt

所有對虛擬使用者資料庫所做的修改都會自動提交:所有新帳號在這同時會被啟動,且所有被刪除的使用者在你換下"Return"鍵後即馬上無法登入。

不用將pure-ftpd server重新啟動

也可以在文字密碼檔做變更之後馬上自動執行"pure-pw mkdb /etc/pureftpd.pdb"。只要加個-m選項:

pure-pw passwd joe -m

這命令會變更pureftpd.passwd中Joe的密碼,〝而且〞提交變更到/etc/pureftpd.pwd。


------------------------ 啟用虛擬使用者 ------------------------

要使用虛擬使用者,必須在FTP server本身啟用這方面的支援。在編譯期,加上--with-puredb選項。

然後在pure-ftpd選項加上:

-l puredb:/path/to/puredb_file

執行FTP server,讓它自動建立家目錄,並做puredb驗證:

/usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &

試一下'ftp localhost'並以Joe的身份登入


------------------------ 轉入系統帳號 ------------------------

你可以將所有系統帳號(/etc/passwd)轉到FTP上的虛擬使用者,利用"pure-pwconvert"

像這樣:
pure-pwconvert >> /etc/pureftpd.passwd

必須用root身份的帳號來執行才會有效。

複製系統帳號可讓使用者在FTP及Telnet存取時,使用不同的密碼。

留言