jump to navigation

virtual user ftp July 12, 2006

Posted by Jeff in : Computer , trackback

記錄一下弄的過程給自己看

簡單講就是 vsftp + pam_mysql 認證
所以要先把 vsftp , mysql, pam_mysql 裝好
然後 mysql 開一個資料庫
裡面一個 table 放 user 資料
我是開這樣

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| sn       | int(11)     | YES  |     | NULL    |       |
| username | varchar(16) | YES  |     | NULL    |       |
| password | varchar(16) | YES  |     | NULL    |       |
| status   | int(1)      | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

然後在 /etc/pam.d/vsftp 加上兩行

auth sufficient /usr/lib/security/pam_mysql.so user=*db_username* passwd=*db_password* host=*db_server* db=*db_name* table=*table_name* usercolumn=*username_field_name* passwdcolumn=*password_field_name* crypt=0 where=status=1
account sufficient /usr/lib/security/pam_mysql.so user=*db_username* passwd=*db_password* host=*db_server* db=*db_name* table=*table_name* usercolumn=*username_field_name* passwdcolumn=*password_field_name* crypt=0 where=status=1

其中 *xxxxx* 要填你自己的設定
crypt 的值: 0 代表不加密; 1 代表 password function; 2 代表 crypt function
where: 可有可無, 我是設定狀態 1 的才是 active 帳號
原本有的那幾行別刪掉 放在後面
這樣你原本 local 的 user 帳號才能夠正常運作

然後就是 vsftp.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=65100
pasv_max_port=65120
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf

大多是基本設定
重點在這幾行
chroot_local_user=NO -> local user 不受目錄限制
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list -> virtual user 只能在他自己的目錄 (chroot)
user_config_dir=/etc/vsftpd_user_conf -> 針對每個 virtual user 的設定檔 (像是該 user 的根目錄等等)

打完 收工

Update:
發現一個比較簡單的設法

user_sub_token=$USER
local_root=/path/to/chroot/dir/$USER

這樣就會自己認帳號對應路徑了

目前沒有相關的文章

Comments»

no comments yet - be the first?