2013年4月24日 星期三

Ubuntu 9.10 vsftpd 基於MySQL虛擬使用者建立

Ubuntu 9.10 vsftpd 基於MySQL虛擬使用者建立

Ubuntu 9.10 vsftpd 基於MySQL虛擬使用者建立

首先建立一個 vsftpd使用的Linux 帳號。
# useradd ftp
MySQL建立一個屬於 vsftpd使用的資料庫。
在資料庫裡新增三個欄位,分別為 ID、Name 、Password
而 ID為PRIMARY KEY ,自動遞增,不可為空。
而 Name不可為空,也不可重覆。
而 Password不可為空。如下:
建立資料庫:
CREATE DATABASE 資料庫名稱 ;
建立資料表:
CRETE TABLE '資料表名稱' ('ID' INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
                         'Name'  VARCHAR(30) NOT NULL ,
                         'Password' VARCHAR(50) NOT NULL , UNIQUE('Name')
                        )ENGINE=MYISAM ;
新增資料:
INSERT INTO '資料表名稱'  ('Name'  , 'Password') VALUES ( '新增的帳號'  , PASSWORD('新增帳號的密碼'));
資料庫新增完後。
修改 /etc/pam.d/vsftpd
內容為:
auth required pam_mysql.so user=資料庫登入帳號  passwd=資料庫登入密碼 host=localhost db=資料庫名稱  table=資料表名稱 usercolumn=使用者名稱欄位名稱  passwdcolumn=使用者密碼欄名稱 crypt=2
account required pam_mysql.so user=資料庫登入帳號  passwd=資料庫登入密碼 host=localhost db=資料庫名稱  table=資料表名稱 usercolumn=使用者名稱欄位名稱  passwdcolumn=使用者密碼欄名稱 crypt=2
修改完後儲存。
修改 /etc/vsftpd.conf
guest_enable=YES
write_enable=YES
guest_username=ftp
local_root=/home/ftp/$USER                                # 使用者目錄 
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf/        # 使用者設定檔存放目錄
修改完畢後,重新啟動 vsftpd
/etc/init.d/vsftpd restart在來就可以建立新的 ftp使用者了。
首先在 MySQL下新增資料在剛剛所建立的資料表裡。
INSERT INTO '資料表名稱'  ('Name'  , 'Password') VALUES ( '新增的帳號'  , PASSWORD('新增帳號的密碼'));接下來設定使用者目錄。 
新增檔名為使用者名稱的檔案到 /etc/vsftpd/vsftpd_user_conf/ 資料夾下
內容為:
local_root=/目錄位置/ 使用者資料夾 
存檔。
如目錄位置下並沒有這資料夾,則新增資料夾,並設定目錄權限。
mkdir /目錄位置/ 使用者資料夾
chown -R ftp /目錄位置/ 使用者資料夾
大致上設定到這裡就都 ok了。
如果還是無法登入,可能是 /etc/vsftpd.conf設定檔有設定到vsftpd.user_listvsftpd.chroot_list這二個檔案。
如果都無誤,因該都可使用了。
本實作是參考底下網址:
http://blog.gclin.org/2009/04/14/vsftp-virtual-user-mysql-add-user/

沒有留言:

張貼留言