本站最近更新 - 使用說明 - 測試沙箱 - 搜尋 Wiki:

主選單

FreeBSD

PcBSD 0.83

Windows

程式語言

(edit)



編輯本頁 列印預覽 群組最近更新 本頁更新歷程

使用 VSFTP 與 MySQL 建置 FTP 的虛擬帳戶

建置平台 FreeBSD 5.4-STABLE

Step 1. 安裝 MySQL
 # cd /usr/ports/database/mysql40-server
 # make install clean

Step 2. 安裝 PAM-MySQL
 # cd /usr/ports/security/pam-mysql
 # make install clean

 安裝後,注意提示訊息,需複製 或 搬移 或 連結 pam_mysql.so 到指定路徑 

 # cp /usr/local/lib/pam_mysql.so /usr/lib/pam_mysql.so


 Step 3. 安裝 vsftp
 # cd /usr/ports/vsftpd
 # make install clean

Step 4. 啟動 MySQL
 # /usr/local/share/mysql/mysql.server start

 若要在開機時啟動,請將 mysql_enable="YES" 加到 /etc/rc.conf 中 

Step 5. 建立虛擬帳號資料庫
 # mysql
 mysql> create database vsftpd;   //建立 vsftpd 使用的資料庫
 mysql> use vsftpd;               //切換至 vsftpd 資料庫   
 mysql> create table users(name varchar(20) 
        binary,passwd varchar(20) binary);   
 //建立帳號資料表
 mysql> insert into users (name,passwd) values 
        ('george',password('123456'));    
 //新增一個使用者
 mysql> grant select on vsftpdvu.users to vsftpdguest@localhost 
        identified by 'vsftpdguest'; 
 //設定 vsftpd 資料庫的使用權限

Step 6. 修改 /etc/pam.d/ftp
  auth required pam_mysql.so user=vsftpdguest passwd=vsftpdguest 
  host=localhost db=vsftpd table=users usercolumn=name 
  passwdcolumn=passwd crypt=2

  account required pam_mysql.so user=vsftpdguest passwd=vsftpdguest 
  host=localhost db=vsftpd table=users usercolumn=name 
  passwdcolumn=passwd crypt=2

  1. 請將舊有的資料全部刪除,只留這兩行
  2. 此檔須與資料庫設定的內容吻合

Step 7. 設定 vsftpd (/usr/local/etc/vsftpd.conf)

  1. 設定檔太長,僅列出部份

  guest_enable=YES                         #是否開放Guest登入
  guest_username=vsftpdguest               #Guest 對應的系統使用者名稱
  local_root=ftp                           #登入後的根目錄
  local_enable=YES                         #本機使用者是否能登入
  write_enable=YES                         #開放寫入的權限
  anon_upload_enable=YES                   #匿名登入是否可上傳 
                                           #(虛擬帳號登入視同匿名登入) 
  anon_mkdir_write_enable=YES              #匿名登入建立目錄與寫入檔案的權限
  user_config_dir=/usr/local/etc/userdir   #使用者環境設定檔位置 (可有可無)
  chroot_list_enable=YES                   #限定使用者僅可在家目錄下活動
  chroot_list_file=/usr/local/etc/vsftpd.chroot_list  
  #限定使用者僅可在家目錄下活動的設定檔  chroot_list_enable 設為 YES 才生效
  anon_umask=022                           #匿名上傳後的 umask 設定值
  listen=YES                               #使用 standalone 模式啟動
  virtual_use_local_privs=YES              #匿名使用者是否與本機使用者權限相同

Step 8. 新增 vsftpdguest 使用者
  # adduser   //自己加了...

Step 9. 相關檔案的建立
a. 在 vsftpdguest 的家目錄下建立 ftp 的目錄
b. 在 /usr/local/etc 下建立 userdir 的目錄
c. 在 /usr/local/etc/userdir 下產生使用者的設定檔
    ex. george 使用者的設定檔為 『george』內容為 
      local_root=hello   
      #指定 george 登入後的目錄位置在 /home/vsftpdguest/ftp 下的 hello 目錄       
d.建立 /usr/local/etc/vsftpd.chroot_list
其內容為使用者名稱,一個使用者名稱放一行,
在此檔中的使用者只能在自己的家目錄中活動

Step 10. 啟動 vsftpd
 # /usr/local/libexec/vsftpd &

後記:

以 inetd 模式啟動 vsftpd

將 vsftpd.conf 中 listen=YES 移除
修改 /etc/inetd.conf
  ftp  stream  tcp  nowait  root   /usr/local/libexec/vsftpd  vsftpd

小出鎚

目前測試,還有一個地方有問題:
第一個虛擬帳號並無法切到指定的家目錄,還是會到 ftp 的目錄,之後的 user 則無此問題
編輯本頁 - 列印預覽 - 群組最近更新 - 本頁更新歷程 - 搜尋 Wiki
頁面最後更新於 2006 年 03 月 23 日,12:42 AM