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_list
與
vsftpd.chroot_list
這二個檔案。
如果都無誤,因該都可使用了。
本實作是參考底下網址:
http://blog.gclin.org/2009/04/14/vsftp-virtual-user-mysql-add-user/