个人工具

Proftpd服务安装设置

来自Ubuntu中文

跳转至: 导航, 搜索

使用 Proftp 有個好處,可以用其它方式認證,不用實體帳號登入,可以減少試帳號機會。

這次利用mysql 資料庫,

環境:Ubuntu 6.06.1 LTS


  1. 安裝 proftpd-mysql 套件


         sudo apt-get install proftpd-mysql


  2. 設定 mysql 帳號


         mysql -u root -p
         create database ftp;
         GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO ‘proftpd’@'localhost’ IDENTIFIED BY ‘password’;
         FLUSH PRIVILEGES;


  3. 建立mysql資料庫


         CREATE TABLE ftpgroup (
         groupname varchar(16) NOT NULL default ”,
         gid smallint(6) NOT NULL default ‘5500′,
         members varchar(16) NOT NULL default ”,
         KEY groupname (groupname)
         ) TYPE=MyISAM COMMENT=’ProFTP group table’;
         CREATE TABLE ftpuser (
         id int(10) unsigned NOT NULL auto_increment,
         userid varchar(32) NOT NULL default ”,
         passwd varchar(32) NOT NULL default ”,
         uid smallint(6) NOT NULL default ‘5500′,
         gid smallint(6) NOT NULL default ‘5500′,
         homedir varchar(255) NOT NULL default ”,
         shell varchar(16) NOT NULL default ‘/sbin/nologin’,
         count int(11) NOT NULL default ‘0′,
         accessed datetime NOT NULL default ‘0000-00-00 00:00:00′,
         modified datetime NOT NULL default ‘0000-00-00 00:00:00′,
         PRIMARY KEY (id),
         UNIQUE KEY userid (userid)
         ) TYPE=MyISAM COMMENT=’ProFTP user table’;


  4. 設定 proftpd.conf ,讓 proftp 可以用 mysql 資料認證


         SQLBackend mysql # 使用 mysql 資料庫為主
         SQLAuthTypes Backend # 密碼認證 已 PASSWORD() 產生為主
         SQLAuthenticate on
         SQLConnectInfo ftp@localhost proftpd password # MySQL 連線資訊,資料庫名稱@主機 帳號 密碼
         SQLUserInfo ftpuser userid passwd uid gid homedir shell # 使用者資料庫欄位
         SQLGroupInfo ftpgroup groupname gid members # 群組資料庫欄位
         SQLLogFile /var/log/proftpd/sql.log # SQL Log 檔
         SQLHomedirOnDemand on # 當 Home 目錄不存在,會自己產生。
         SQLLog PASS updatecount # SQL Log 格式,當正確登入時,要執行的 SQL 語法
         SQLNamedQuery updatecount UPDATE “count=count+1, accessed=now() where userid=’%u’” ftpuser
         SQLLog STOR,DELE modified # SQL Log 格式,當儲存或刪除檔案時,要執行的 SQL 語法
         SQLNamedQuery modified UPDATE “modified=now() where userid=’%u’” ftpuser
         RequireValidShell off


  5. 建立使用者帳號


         mysql -u root -p
         insert into ftp (userid, passwd , uid, gid , homedir ) values (’ubuntu_user’,password(’12345′), ‘5500′,’5500′,’/home/ftp/ubuntu_user’);


     建立 ubuntu_user 帳號,密碼為 12345 ,目錄位於 /home/ftp/ubuntu_user , uid / gid 為此 user 上傳檔案時的 uid / gid。
  6. 重新啟動 Proftp


         sudo /etc/init.d/proftpd restart


     請用剛剛建立好的帳號登入看看,若順利就可以登入指定目錄內。
  7. 除錯
     有任何問題,請檢查 sql.log ,會有資訊說明錯誤的原因。