目錄: 一、安裝 二、啟動 三、匿名登錄 一、安裝 我是以FreeBSD為平台的,其它Unix/Linux平台請參考相關shell命令。在shell提示符下輸入: # cd /usr/ports/ftp/pure-ftpd # make install clean # rehash FreeBSD會以ports方式安裝pureftpd。其它平台的安裝方法參看相關文章。 二、啟動 將配置文件的樣例文件複製為配置文件: # cp /usr/local/etc/pure-ftpd.conf.sample /usr/local/etc/pure-ftpd.conf 用配置文件啟動 PureFTPd : # /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf 注意:如果是其它平台,或者採用編譯方式安裝,路徑可能與上面的不同。 三、匿名登錄 用 flashfxp 連接,只能系統用戶連接(用「/etc/passwd」文本文件中的用戶認證)。 這是因為默認的配置文件中是允許匿名用戶和系統用戶(根帳號 root 除外)都可以訪問的。但這時匿名用戶還無法訪問,出現「421 無法建立安全匿名 FTP」錯誤。還需要幾個步驟才能實現匿名登錄。 pureftpd 的官方文件(http://download.pureftpd.org/pub/pure-ftpd/doc/README)說: ------------------------ SETTING UP AN ANONYMOUS FTP ------------------------ If a 'ftp' user exists and its home directory is reachable, Pure-FTPd will accept anonymous login, as 'ftp' or 'anonymous'. Files have to be located in the home FTP directory. There's no need for 'bin', 'lib', 'etc' and 'dev' directories, nor any external program. Don't chown the public files to 'ftp', just writable directories ('incoming') . 就是說需要存在一個名稱必須為「ftp」的系統用戶,並且它的主目錄可用。就可以實現匿名用戶登錄了。 心得:很多人在問為什麼不能匿名登錄,原因就在於沒有「ftp」系統帳號,以及沒有創建主目錄。 1、為匿名用戶添加系統帳號和組。 增加一個「ftp」組: # pw groupadd ftp 如果組存在,直接添加用戶即可。 添加「ftp」系統用戶: # pw useradd ftp -g 14 -d /var/ftp -s /sbin/nologin 其中的 「/var/ftp」就是匿名用戶的主目錄,你可以指定為其它目錄,比如「/home/ftp」等。 14是「ftp」組的組id 。其它的 www 系統用戶的 uid/gid 是:「80/80」,等等(見 /etc/passwd )。 如果發現帳號是存在的,那麼請檢查帳號的主目錄是否存在,如果不存在,也會提示上述錯誤。 2、建立匿名用戶的主目錄。 # mkdir /var/ftp # mkdir /var/ftp/readme 其中「mkdir /var/ftp/readme」是給個參照,因為「/var/ftp」是空的。 3、測試。 馬上用 flashfxp 匿名登錄,見到 readme 文件夾了,成功,激動!但是上傳、下載、建目錄什麼的都不允許,要實現這些功能需要進一步修改配置文件,這個在我後續文章中有詳細講解。 ~ 全文完~ 印第安 2008年10月11日15:44:17 v1.0 初稿 2008年10月11日18:56:40 更新 2008年10月11日19:09:57 更新 2008年10月11日21:13:46 更新 2008年10月13日20:36:10 v1.1 更新,添加虛擬用戶認證。 2008年10月14日15:12:47 更新,排版美化。 2008年10月15日14:15:21 更新 2008年10月16日13:40:00 更新 2008年10月16日19:05:06 v1.2 更新,加入 pure-pw 語法。 2008年10月17日14:48:59 更新 2009年7月25日15:01:17 更新為1.3 ( 聲明:原創文章,未經授權,不得轉載。作者:印第安 http://blog.kysf.net ) [ 本帖最後由 wolfg 於 2009-8-20 17:46 編輯 ]
《解決方案》
[原創]FreeBSD學習筆記18-pureftpd使用詳解(2)-用shell用戶或虛擬用戶登錄pureftpd 排版美觀的版本,請看我博客中的日誌,出處哪裡的鏈接即是。 ( 聲明:原創文章,未經授權,不得轉載。作者:印第安 http://blog.kysf.net ) 作者:indian 版本:v1.3 出處:http://indian.blog.163.com/blog/static/1088158200891621053789 版權:作者保留對本文的一切修改、發布等權力。任何人未經允許不得轉載或複製本文部分或全部內容。 關鍵詞:ftp, pureftpd, pureftpd虛擬用戶 摘要:講解了Unix系統下pureftpd如何用shell用戶登錄,以及如何用虛擬用戶登錄。 目錄: 一、系統真實(shell)用戶登錄 二、puredb虛擬用戶支持 三、技巧 ------------------------------------------------------------------分 割 線----------------------------------------------------------------- 一、系統真實(shell)用戶登錄 默認配置文件允許匿名用戶登錄,同時允許系統真實用戶登錄。經過上面的步驟后(詳情見我的前一篇文章《pureftpd基礎:安裝、配置、實現匿名登錄》),這時我們用系統用戶登錄,是可以登錄,並且可以上傳、下載、建目錄和刪除等。 如果要讓 FTP 只支持系統真實用戶登錄,你只要稍微修改一下 pureftpd 的配置文件就可以了。 # ee /usr/local/etc/pure-ftpd.conf ChrootEveryone yes NoAnonymous yes UnixAuthentication yes //用「/etc/passwd」中的用戶認 只需以上三行就可以實現只允許系統真實用戶登錄 FTP 。系統真實用戶會登陸到自己的系統主目錄中,可下載,可上傳,可刪除,沒有任何限制。但是由於有 chroot 的限制,所以無法去真實系統的其它目錄而已。在實際應用中,這種用法並不多見,我也就不費篇幅介紹了。 二、puredb虛擬用戶支持 1、建立 FTP 專用的系統用戶。 自從 0.99.2 版本開始,pure-ftpd 就開始支持虛擬用戶。 虛擬用戶方式是一個簡單的用戶列表機制,類似於「/etc/passwd」,它將用戶的相關信息,如口令、姓名、 uid、gid、主目錄等,存入一個文本文件。但是該文本文件文件只適用於 FTP 。這意味著,你可以很容易地設置 FTP 虛擬帳號,而不需要在系統中添加系統用戶,以免和系統用戶混淆在一起。 同時,可以為這些虛擬用戶單獨設置配額、ratio、帶寬等限制,這些功能是系統用戶認證無法實現的。很多虛擬用戶可以共享同一個系統用戶的屬性,因此建議為這些虛擬用戶單獨創建一個系統用戶,從而方便管理。 你可以使用系統已經存在的帳號,比如「nobody」用戶,作為虛擬用戶的系統帳號。但最好使用一個單獨的帳號,專門對應 FTP 。我們選擇新建系統用戶(經測試,在 linux 系統中如果用 linux 系統自帶的 ftp 用戶,在用虛擬用戶登陸時會出現不被信任的提示。大家也可以做做實驗,看是不是這樣)。建立方法如下: 對於 Linux/OpenBSD/NetBSD/Solaris/HPUX/ 或其它的類 Unix 系統,使用下面的命令: groupadd ftpgroup useradd -g ftpgroup -d /home/ftp -s /sbin/nologin ftpuser 對於 FreeBSD ,用下面的命令: # pw groupadd ftpgroup # pw useradd ftpuser -g ftpgroup -d /home/ftp -s /sbin/nologin 系統帳號建立好后,我們就開始著手準備虛擬用戶了。 2、建立虛擬用戶。 使用 」pure-pw」命令實現創建、修改和刪除虛擬用戶等操作。虛擬用戶的信息以每個用戶一行的方式存放在相應的文本文件中。你也可以手工編輯這個文件。其存儲格式如下:
::::::::::::::::: 除了帳號、口令、uid、gid 和 home directory 之外,其它的可以是空值。 下面是 pure-pw 命令用法。 (1)創建新用戶。 要創建一個新用戶,用下列的語法。 pure-pw useradd[-f ] -u[-g] -D/-d[-c] [-t] [-T] [-n] [-N] [-q] [-Q] [-r[/][,[/]]...] [-R[/][,[/]]...] [-i[/][,[/]]...] [-I[/][,[/]]...] [-y] [-z -] [-m]假設我們要創建「tim」這樣一個虛擬用戶,則可以使用如下命令: # pure-pw useradd tim -u ftpuser -d /home/ftp/tim 其中: -u 將虛擬用戶 tim 同系統用戶 ftpuser 關聯在一起。 -d 參數使 tim 只能訪問其 home 目錄。而如果想讓他訪問整個文件系統,可以用 -D 選項。 執行完上述命令后,會提示輸入密碼,兩次輸入 tim 用戶的密碼即可。用戶的口令會根據系統對加密方式的支持情況,選擇一個最安全的方式進行加密。 然後需要建立「/home/ftp/tim」目錄,並修改它的屬性。 # mkdir /home/ftp # mkdir /home/ftp/tim 注意:在配置文件中有選項自動建立主目錄。 CreateHomeDir yes //設置為 yes 創建新虛擬用戶時 pureftpd 自動創建用戶的主目錄。 但是有一點需要大家注意,就是它只支持二層目錄的建立而不支持三層以上目錄的建立。舉個例子,如果我們創建虛擬用戶是用如下語句: # pure-pw useradd test -u ftpuser -d /home/ftp 而這時系統只有「/home」目錄而沒有「/home/ftp」目錄,那麼在 test 用戶第一次登陸時 pureftpd 會創「/home/ftp」目錄。 如果我們改變以上命令如下: # pure-pw useradd test -u ftp -d /home/ftp/test 而這時系統只有「/home」目錄或「/home/ftp」目錄,而沒有「/home/ftp/test」目錄,那麼我們登陸時會得到沒有主目錄的提示。 其他參數含義: -z 選項運用用戶在一天當中指定的時間段連接伺服器。如 -z 0900-1800 ,則該用戶只能在上午 9 點到晚上 6 點之間連接伺服器。 -r 選項或 -R 選項,可以限制用戶從指定 IP 和掩碼連入伺服器。如,單一的 IP/掩碼對(-r 192.168.1.0/24)。多個IP/掩碼對用英文逗號隔開(-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)。或者以上形式的任何組合。(-r,允許;-R拒絕) -y ,用戶同一時間的併發連接數。或者 0 意味著不限制。也就是同一 IP 的連接數。 -f ,默認虛擬用戶的信息會被存放在「./etc/pureftpd.passwd」文件中,通過該選項可以改變該文件的位置。 默認的存儲用戶信息的文件存放在「./etc/pureftpd.passwd」,我用 ports 方式安裝的 pureftpd ,其存放位置在「/usr/local/etc/pureftpd.passwd」。 我們看下這個文本文件的內容。 # cat /usr/local/etc/pureftpd.passwd tim:$1$LX/3.F60$bYdYwsQOYIaWq.Ko.hfI3.:500:101::/home/ftp/tim/./::::::::::::: 密碼是系統自己加密的。 (2)更改用戶。 與 pure-pw adduser 不同的是,使用 pure-pw usermod 不是創建一個用戶,而是更改已存在用戶的某些屬性。 例如,我們給 joe 用戶添加一個限額,限制 joe 用戶最多擁有1000個文件,最大10 Megabytes 空間。命令如下: # pure-pw usermod joe -n 1000 -N 10 重置某些屬性的語法如下: pure-pw usermod-n '' :禁用文件配額 pure-pw usermod-N '' :禁用文件大小配額 pure-pw usermod-q '' -Q '' :禁用 ratio pure-pw usermod-t '' :禁用下載帶寬限制 pure-pw usermod-T '' :禁用上傳帶寬限制 pure-pw usermod<-i,-i,-r or="" -r=""> '' :禁用 IP 過濾 pure-pw usermod-z '' :禁用時間段約束 pure-pw usermod-y '' :禁用併發數限制 (3)刪除用戶。 刪除一個用戶的命令語法是: # pure-pw userdel[-f] [-m] 這時,用戶的信息會被從指定的 passwd 文件中刪除,但是用戶的 home 目錄會被保留,需要手工刪除。 (4)修改口令。 更改一個用戶口令的語法是: # pure-pw passwd[-f] [-m] (5)顯示用戶信息。 「 ./etc/pureftpd.passwd」 文件中記錄的信息不方便用戶的閱讀,因此 pure-ftpd 提供了顯示用戶信息的命令。其語法是: # pure-pw show[-f] 例如: # pure-pw show joe Login : joePassword : $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/16Denied client IPs : 192.168.1.1,blah.verybadhost.comTime restrictions : 0900-1800 (enabled)Max sim sessions : 0 (unlimited)主目錄後面的「/./」表示用戶目錄是被鎖定的。 3、提交更改。 重要: 通過上面提到的命令,你可以創建、修改和刪除虛擬用戶,甚至可以手工方式編輯「/usr/local/etc/pureftpd.passwd」文件。但是,只有提交這些更改,pure-ftpd 訪問才能生效。類似資料庫中的事務處理。 提交更改,意味著系統會根據(或者指定的其它文件)來創建一個 pure-ftpd 可讀的二進位格式的文件。 該二進位文件中的帳號是分類存儲並索引優化了的,可以加快訪問速度。 創建 PureDB 文件的命令如下: # pure-pw mkdb 運行命令后,系統會在「/usr/local/etc/pureftpd.passwd」文件所在目錄自動生成「/usr/local/etc/pureftpd.pdb」索引文件。 如果你想從你指定的 passwd 文本文件中生成PureDB 文件,用「-f」選項。 # pure-pw mkdb /etc/accounts/ftpusers.pdb -f /etc/accounts/ftpusers.txt 創建了 PureDB 文件(也就是提交)后,不必重啟 pure-ftpd 服務,對虛擬用戶進行的創建、修改和刪除等操作立即生效。 同時,也可以通過「-m」選項,讓「/usr/local/etc/pureftpd.passwd」文本文件在修改(如添加用戶、修改密碼、刪除用戶等等)后自動提交。命令格式如下: # pure-pw passwd joe –m 這個命令將修改「/usr/local/etc/pureftpd.passwd」文本文件中的用戶密碼,並將更改提交給「/usr/local/etc/pureftpd.pdb」。 4、更改配置文件讓虛擬用戶生效 將配置文件中的 PureDB 文件路徑改為你的PureDB 文件路徑。 # ee /usr/local/etc/pure-ftpd.conf PureDB /usr/local/etc/pureftpd.pdb //Puredb路徑 通過以上建立的用戶,可上傳,可下載,可刪除,擁有全部許可權。可以通過對目錄的限制來達到對用戶許可權的限制,以後再講解。 開啟虛擬用戶后,如果在配置文件中設置「UnixAuthentication no」,pureftpd就只支持虛擬用戶登錄,不支持系統真實用戶登錄。如果設置「UnixAuthentication yes」,pureftpd只支持虛擬用戶登錄,同時支持系統真實用戶登錄。 三、技巧 1、將系統用戶轉換為虛擬用戶。 你可以用「pure-pwconvert」命令,將系統(/etc/passwd)用戶轉換為虛擬用戶。 命令如下: # pure-pwconvert >> /usr/local/etc/pureftpd.passwd 如果你以非特權的系統用戶身份運行該命令,密碼欄將是空的。如果你以 root 用戶身份運行該命令,所有特性都被複制過來,甚至是經過哈希函數加密的密碼。 這個轉換隻會把有 shell 訪問權的用戶轉換過來,shell 訪問設置為 nologin 的將不被轉換。 系統用戶轉化為虛擬用戶的意義在於,同一個用戶名可以用不同的密碼訪問 FTP 和 Telnet 。 2、環境變數 默認的情況下,如果指定了環境變數 PURE_PASSWDFILE ,則虛擬用戶的 passwd 文件位置由該變數的值指定。否則,默認是位置是「/usr/local/etc/pureftpd.passwd」(Linux 中是「/etc/pureftpd.passwd」)。 同樣,PURE_DBFILE 環境變數用來指定 pdb 文件的位置。默認是「/usr/local/etc/pureftpd.pdb」(Linux中「/etc/pureftpd.pdb」)。 附:useradd 語法規範 指令名稱:useradd 功能介紹:useradd可用來建立用戶帳號。帳號建好之後,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是保存在/etc/passwd文本文件中。 語法格式:useradd [-mMnr][-c <備註>][-d <登入目錄>][-e <有效期限>][-f <緩衝天數>][-g <群組>][-G <群組>][-s][-u][用戶帳號] 或 useradd -D [-b][-e <有效期限>][-f <緩衝天數>][-g <群組>][-G <群組>][-s] 常用參數說明: -c <備註> 加上備註文字。備註文字會保存在passwd的備註欄位中。 -d <登入目錄> 指定用戶登入時的啟始目錄。 -D 變更預設值。 -e <有效期限> 指定帳號的有效期限。 -f <緩衝天數> 指定在密碼過期后多少天即關閉該帳號。 -g <群組> 指定用戶所屬的群組。 -G <群組> 指定用戶所屬的附加群組。 -m 自動建立用戶的登入目錄。 -M 不要自動建立用戶的登入目錄。 -n 取消建立以用戶名稱為名的群組。 -r 建立系統帳號。 -s 指定用戶登入后所使用的shell。 -u 指定用戶ID。 pure-pw 語法: pure-pw useradd[-f] -u[-g] -D/-d[-c] [-t] [-T] [-n] [-N] [-q] [-Q] [-r/] [-R/] [-i/] [-I/] [-y] [-z-] [-m]pure-pw usermod-f-u[-g] -D/-d- [-t] [-T] [-n] [-N] [-q] [-Q] [-r/] [-R/] [-i/] [-I/] [-y] [-z-] [-m]pure-pw userdel[-f] [-m]pure-pw passwd [-f] [-m]pure-pw show [-f]pure-pw mkdb [[-f]]pure-pw list [-f]-d: chroot user (recommended) -D: don't chroot user -'' : set this option to unlimited -m : also update the /usr/local/etc/pureftpd.pdb database For a 1:10 ratio, use -q 1 -Q 10 To allow access only between 9 am and 6 pm, use -z 0900-1800 ~ 全文完~ 印第安 2008年10月11日15:44:17 v1.0 初稿 2008年10月11日18:56:40 更新 2008年10月11日19:09:57 更新 2008年10月11日21:13:46 更新 2008年10月13日20:36:10 v1.1 更新,添加虛擬用戶認證。 2008年10月14日15:12:47 更新,排版美化。 2008年10月15日14:15:21 更新 2008年10月16日13:40:00 更新 2008年10月16日19:05:06 v1.2 更新,加入 pure-pw 語法。 2008年10月17日14:48:59 更新 2009年7月25日15:16:36 更新為v1.3 ( 聲明:原創文章,未經授權,不得轉載。作者:印第安 http://blog.kysf.net ) 《解決方案》 [原創]FreeBSD學習筆記28-pureftpd使用詳解(3)-Pureftpd的許可權控制 ( 聲明:原創文章,未經授權,不得轉載。作者:印第安 http://blog.kysf.net ) 作者:indian 版本:v1.0 出處:http://indian.blog.163.com/blog/static/1088158200962534955611 版權:作者保留對本文的一切修改、發布等權力。任何人未經允許不得轉載或複製本文部分或全部內容。 關鍵詞:ftp, pureftpd, pureftpd安裝配置, pureftpd 許可權 摘要:Unix系統下pureftpd使用詳解。特別是解決了很多人匿名用戶無法登錄的問題。與資料庫的結合使得管理成千上萬的用戶很輕鬆。 目錄: 一、Unix系統許可權概述 二、匿名用戶的許可權 三、真實用戶和虛擬用戶的許可權 ------------------------------------------------------------------分 割 線----------------------------------------------------------------- pureftpd的許可權控制是通過系統目錄的許可權來實現的。 一、Unix系統許可權概述 1、訪問許可權 Unix 文件系統是一個能夠支持多個用戶同時訪問的文件系統。文件訪問許可權分為三種類型的用戶:文件屬主或用戶(User),同組用戶(Group),其他用戶(Other)。 用戶對文件或目錄的訪問許可權有三種:讀(r)、寫(w)和執行(x)。 2、文件訪問許可權 如果用戶具有讀文件的訪問許可權,就可以查看文件的內容;具有寫文件的訪問許可權,就可以修改文件的內容;具有執行文件的訪問許可權,就可以運行程序文件。 3、目錄訪問許可權 對於目錄來說,讀訪問許可權允許用戶列出目錄的內容;寫訪問許可權運行用戶在目錄中創建或刪除文件及目錄;執行訪問許可權允許用戶使用 cd 命令進入目錄或使用該目錄作為路徑名的一部分。 重要:pureftpd的許可權控制是通過系統目錄的許可權來實現的。 二、匿名用戶許可權 1、變更匿名用戶主目錄的所有者。 按照《FreeBSD學習筆記12-pureftpd使用詳解(1)-安裝配置》一文中的步驟,在系統中創建了匿名用戶的主目錄后,匿名用戶無法進行上傳、下載、建目錄、刪除等等操作。這是因為匿名用戶的主目錄的所有者不是系統「ftp」用戶。 # ls -l /home/ total 6 drwxr-xr-x 3 root wheel 512 Oct 16 04:42 ftp drwxr-xr-x 2 indian wheel 512 Oct 11 12:55 indian drwxr-xr-x 2 test wheel 512 Oct 11 12:55 test我們看到 ftp 目錄的所有者為 root 。我們更改「ftp」目錄的所有者,目錄有 rwx 許可權。 # chown ftp:14 /home/ftp# ls -l /home/total 6drwxr-xr-x 3 ftp ftp 512 Oct 16 04:42 ftpdrwxr-xr-x 2 indian wheel 512 Oct 11 12:55 indiandrwxr-xr-x 2 test wheel 512 Oct 11 12:55 test用 flashfxp 匿名連接。現在匿名用戶可以上傳文件,但是不能下載文件、建文件夾和刪除文件。當你下載時看到沒有被管理員核准。 550-This file has been uploaded by an anonymous user. It has not 550 yet been approved for downloading by the site administrators. 傳送失敗! 2、允許匿名用戶下載。 修改配置文件,允許下載文件。 # ee /usr/local/etc/pure-ftpd.conf AntiWarez yes AnonymousCanCreateDirs no AnonymousCantUpload no「AntiWarez yes 」意思是不接受所有者為 「ftp」 的文件的下載,我們把它設置為 「no」,重啟 pureftpd 服務,就可以下載文件了。 「 AnonymousCanCreateDirs no」,意思是匿名用戶是不能創建目錄,我們把它設置為「yes」,重啟 pureftpd 服務,匿名用戶就可以創建目錄了。 「AnonymousCantUpload no」,意思是匿名用戶可以上傳文件,如果設置為「yes」,匿名用戶不能上傳。 3、只允許匿名用戶登錄。 默認配置文件允許匿名用戶和系統帳戶登錄。如果只允許匿名帳戶登錄,修改默認配置文件: AnonymousOnly yes //是否只讓匿名登錄 重啟伺服器或重啟服務(必須)后,就只能匿名登錄了。無論你用什麼帳號,甚至用不存在的帳號登錄(亂碼也行,只要 ftp 伺服器的 IP 是對的)都只會登錄到匿名用戶的主目錄。 三、真實用戶和虛擬用戶的許可權 系統真實用戶和PureDB虛擬用戶的許可權由系統目錄和文件許可權決定。 1、具有管理許可權的用戶。 具有管理許可權的用戶也就是有上傳、下載、建目錄和刪除許可權的用戶。 # pw groupadd ftpadmingroup # pw useradd ftpadmin -g ftpadmingroup # pure-pw useradd tom -u ftpadmin -d /home/ftpadmin # ls -l /hom/e total 8drwxr-xr-x 6 ftp ftp 512 Oct 16 09:45 ftpdrwxr-xr-x 5 ftpadmin ftpadmingroup 512 Oct 16 11:02 ftpadmindrwxr-xr-x 2 indian wheel 512 Oct 16 09:51 indiandrwxr-xr-x 2 test wheel 512 Oct 11 12:55 test「ftpadmin」用戶對「ftpadmin」目錄有 rwx 的許可權。 2、系統目錄的 r 許可權,控制 FTP 的列表許可權。 # chmod u-r /home/ftpadmin # ls -l /home/ total 8drwxr-xr-x 6 ftp ftp 512 Oct 16 09:45 ftpd-wxr-xr-x 5 ftpadmin ftpadmingroup 512 Oct 16 11:02 ftpadmindrwxr-xr-x 2 indian wheel 512 Oct 16 09:51 indiandrwxr-xr-x 2 test wheel 512 Oct 11 12:55 test去掉「ftpadmin」目錄的 r 許可權。FTP 不能列表,可以上傳、建目錄。但是如果知道文件路徑,照樣可以下載和刪除文件。 3、系統目錄所有者的 w 許可權,控制 FTP 的刪除、重命名和建目錄許可權。 # chmod u+r-w /home/ftpadmin # ls -l /home/ total 8drwxr-xr-x 6 ftp ftp 512 Oct 16 09:45 ftpdr-xr-xr-x 5 ftpadmin ftpadmingroup 512 Oct 16 11:02 ftpadmindrwxr-xr-x 2 indian wheel 512 Oct 16 09:51 indiandrwxr-xr-x 2 test wheel 512 Oct 11 12:55 test去掉 ftpadmin 目錄所有者的 w 許可權后,pureftpd 的虛擬用戶不能刪除、重命名文件或目錄,不能建目錄。但是可以下載文件。 4、系統目錄所有者的 x 許可權,控制 FTP 的列表、上傳、下載、建目錄和刪除等全部許可權。 # chmod u+rw-x ftpadmin# ls -ltotal 8drwxr-xr-x 6 ftp ftp 512 Oct 16 09:45 ftpdrw-r-xr-x 4 ftpadmin ftpadmingroup 512 Oct 16 11:48 ftpadmindrwxr-xr-x 2 indian wheel 512 Oct 16 09:51 indiandrwxr-xr-x 2 test wheel 512 Oct 11 12:55 test去掉 ftpadmin 目錄所有者的 x 許可權后,pureftpd 的虛擬用戶不能列表、上傳、下載、建目錄和刪除。 總結:系統目錄和文件的許可權決定 pureftpd 虛擬用戶的許可權。 ~ 全文完~ 印第安 2009年7月25日15:50:00 v1.0 初稿 ( 聲明:原創文章,未經授權,不得轉載。作者:印第安 http://blog.kysf.net ) 《解決方案》 [原創]FreeBSD學習筆記11-pureftpd使用詳解(4)-:用MySQL管理PureFTPd用戶 ( 聲明:原創文章,未經授權,不得轉載。作者:印第安 http://blog.kysf.net ) 出處:http://indian.blog.163.com/blog/static/108815820089935639912 摘要:講解Unix系統下pureftpd怎麼實現用MySQL管理用戶。與其它工具的結合可以實現更多應用,只有想不到,沒有做不到。 目錄: 一、PureFTPd和MySQL的結合 二、pureftpd與其它工具的結合 ------------------------------------------------------------------分 割 線----------------------------------------------------------------- 一、PureFTPd和MySQL的結合 自從0.99.1版本開始,PureFTPd就內置了MySQL資料庫支持。如果啟用了MySQL資料庫支持,那麼所有的用戶信息都可以從mysql資料庫中獲取。這樣就可以用資料庫來管理用戶了,特別是在用戶數量巨多時。 安裝了MySQL資料庫伺服器端(具體安裝步驟見相關文章)后,我們還需要下面的一些步驟完成mysql的支持。 1、建立用戶資料庫。 在mysql中建立名字為「pureftpd」的資料庫。 # mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.67-log FreeBSD port: mysql-server-5.0.67_1 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | phpmyadmin | | test | +--------------------+ 4 rows in set (0.04 sec) mysql> create database pureftpd; Query OK, 1 row affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | phpmyadmin | | pureftpd | | test | +--------------------+ 5 rows in set (0.01 sec) mysql> 2、建立用戶表。 mysql> use pureftpd; Database changed mysql> CREATE TABLE users ( -> User VARCHAR(16) BINARY NOT NULL, -> Password VARCHAR(64) BINARY NOT NULL, -> Uid INT(11) NOT NULL default '-1', -> Gid INT(11) NOT NULL default '-1', -> Dir VARCHAR(128) BINARY NOT NULL, -> PRIMARY KEY (User) -> ); Query OK, 0 rows affected (0.03 sec) mysql> 3、添加用戶。 mysql> INSERT INTO users VALUES("jack","jack",2000,2000,"/home/ftp"); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM users; +------+----------+------+------+-----------+ | User | Password | Uid | Gid | Dir | +------+----------+------+------+-----------+ | jack | jack | 2000 | 2000 | /home/ftp | +------+----------+------+------+-----------+ 1 row in set (0.01 sec) mysql> 如果這時我們用「jack」用戶登錄FTP,會提示錯誤。還需要添加 PureFTPd-mysql 文件的支持。 4、添加mysql配置文件。 將配置文件的樣例文件複製為配置文件: # cp /usr/local/etc/pureftpd-mysql.conf.sample /usr/local/etc/pureftpd-mysql.conf 修改 mysql 配置文件以適合使用。 # ee /usr/local/etc/pureftpd-mysql.conf 將其中的資料庫用戶名和密碼更改為你指定的用戶名和密碼。 # Mandatory : user to bind the server as. MYSQLUser root # Mandatory : user password. You must have a password. MYSQLPassword rootpass 5、開啟mysql支持。 # ee /usr/local/etc/pure-ftpd.conf MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf //mysql配置文件路徑 重啟伺服器后,就可以用「jack」用戶登錄了。 注意,要有「/home/ftp」主目錄,要不然是無法登錄的。 心得:mysql資料庫中的「Uid」和「Gid」欄位指的是Unix系統用戶的uid或gid。「User」欄位就是mysql的虛擬用戶了。如果「/home/ftp」的屬主是ftpuser,其uid/gid是1003/1001,許可權為755。那麼「jack」對「/home/ftp」目錄的訪問許可權就是rx。也就是mysql資料庫中的「Uid」和「Gid」欄位決定用戶的許可權。 二、pureftpd與其它工具的結合 Pureftpd還可以與LDAP、TLS、PostgreSQL等工具結合,具體的使用方法請參看其它文章。 值得一提的是,與資料庫結合的意義在於可以擴展應用。 比如: l 用php編寫前台頁面管理用戶,讓用戶自己修改密碼。這個可以應用於虛擬主機管理界面中。 l 將用戶數據表與論壇或網站的用戶數據表整合,可以在論壇或網站中實現 FTP 功能。 l 將用戶數據表與郵件服務的用戶數據表整合,可以實現郵件系統中的網盤功能,就像163郵箱中的網盤一樣。 諸如此類應用,等等。 印第安 2008年11月4日23:36:10 v1.0 2008年11月4日23:57:14 更新 2009年7月25日15:53:45 更新 《解決方案》 不錯,原創文件就是好! 支持分享經驗:mrgreen: 《解決方案》 感謝分享,支持原創! 《解決方案》 參考樓主的範例,已實現了利用pure-ftpd自己的存儲格式構建了虛擬用戶的分別控制! 挺滿意的。用戶的細粒度的控制,共享的控制。很有FreeBSD的風格! 謝謝分享。 《解決方案》 樓主和各位前輩好,我遇到一個pureftpd相關的用戶許可權的問題,是這樣的: 我通過pureftpd+mysql實現虛擬用戶的認證,最終的效果和樓主大哥說的這句話一樣的。 「心得:mysql資料庫中的「Uid」和「Gid」欄位指的是Unix系統用戶的uid或gid。「User」欄位就是mysql的虛擬用戶了。如果 「/home/ftp」的屬主是ftpuser,其uid/gid是1003/1001,許可權為755。那麼「jack」對「/home/ftp」目錄的訪問許可權就是rx。也就是mysql資料庫中的「Uid」和「Gid」欄位決定用戶的許可權。」 但是,我是結合apache來做的web虛擬主機伺服器,用mkdir()建立的目錄,其所有者為FreeBSD內置的www用戶,這樣的話,ftp帳號登錄用戶就無法操作mkdir()所建的目錄了,只有讀許可權。每次我都要進入系統chmod 777一下才可以。請問怎麼才能解決這個問題呢?謝謝! 《解決方案》 本帖最後由 indian 於 2010-05-10 21:54 編輯 樓主和各位前輩好,我遇到一個pureftpd相關的用戶許可權的問題,是這樣的: 我通過pureftpd+mysql實現虛擬用戶的認證,最終的效果和樓主大哥說的這句話一樣的。 「心得:mysql資料庫中的「Uid」和「Gid」欄位指的是Unix系統用戶的uid或gid。「User」欄位就是mysql的虛擬用戶了。如果 「/home/ftp」的屬主是ftpuser,其uid/gid是1003/1001,許可權為755。那麼「jack」對「/home/ftp」目錄的訪問許可權就是rx。也就是mysql資料庫中的「Uid」和「Gid」欄位決定用戶的許可權。」 但是,我是結合apache來做的web虛擬主機伺服器,用mkdir()建立的目錄,其所有者為FreeBSD內置的www用戶,這樣的話,ftp帳號登錄用戶就無法操作mkdir()所建的目錄了,只有讀許可權。每次我都要進入系統chmod 777一下才可以。請問怎麼才能解決這個問題呢?謝謝!qionger83 發表於 2010-01-26 21:24 http://bbs.chinaunix.net/images/common/back.gif apache 對應的FreeBSD內置用戶是www,Pureftpd對應的內置用戶是ftp,要實現你說的那個情況,把Pureftpd對應的內置用戶換成www用戶。或者單獨建一個專門用戶,比如wwwftp,不過這樣就要改Pureftpd和Apache的對應系統用戶。 《解決方案》 學習還真的不容易呀,得天天找東西看,希望高手推薦點好書!