成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用MySQL來管理Proftpd 的帳號

運維 系統運維
用MySQL來管理Proftpd 的帳號:Linux下Proftpd搭建FTP服務器的高級設置:proftpd(Professional FTP daemon)是一項針對Wu-FTP的弱項而開發的FTP服務器技術程序。除了改進的安全性,另外還具備許多Wu-FTP沒有的特點。比如,可以以Stand-alone、xinetd模式運行等。ProFTP不僅配置很方便,而且還有MySQL和Quota模塊可供選擇。本文將介紹用MySQL來管理Proftpd 的帳號。

  用MySQL來管理Proftpd 的帳號:Unix和Linux中,vsftpd是一款非常安全的FTP服務器。任何發行版本中的vsftpd都非常安全。像RedHat、Debian、GNU、GNOME、KDE 等等一些大型站點,都采用vsftpd作為它們的FTP服務器。本文將介紹用MySQL來管理Proftpd 的帳號。

  一般建 FTP 帳號, 都是直接在系統上直接開個使用者的帳號, 但是如果是要開帳號給安全觀念不夠的人, 還是另外找個方法來做.

  所以想到的是, FTP 帳號獨立出來, 讓 MySQL 來管理 FTP 的帳號, 而且 FTP 順便限制存取的范圍, 至少會比較安全一點(另外就是上傳后的程式執行問題, 就不在此討論).

  在 Debian 上面跑 Proftpd, 使用 MySQL 來管理帳號已經有不少人做過這種事了~ 下述叁篇文章都有寫, 在此主要是參考第叁篇:

  一、安裝 MySQL Apache Proftpd 和 proftpd-mysql

  apt-get install mysql-server mysql-client libmysqlclient15-dev apache2 proftpd-mysql

  二、設定 FTP 使用的 User 和 Group

  groupadd -g 2001 ftpgroup

  useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

  三、建立 MySQL ftpuser For Proftpd

  因為要用 MySQL 來管理 Proftpd 的 User, 所以要建下面的 Table 來存放 User data.

 

 

  1.   mysql -u root -p  
  2.  
  3.   create database ftp;  
  4.  
  5.   GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'ftp_password';  
  6.  
  7.   GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'ftp_password';  
  8.  
  9.   FLUSH PRIVILEGES;  
  10.  
  11.   use ftp;  
  12.  
  1.   CREATE TABLE ftpgroup (  
  2.  
  3.   groupname varchar(16) NOT NULL default '',  
  4.  
  5.   gid smallint(6) NOT NULL default '5500',  
  6.  
  7.   members varchar(16) NOT NULL default '',  
  8.  
  9.   KEY groupname (groupname)  
  10.  
  11.   ) TYPE=MyISAM COMMENT='ProFTP group table';  
  12.  
  1.   CREATE TABLE ftpuser (  
  2.  
  3.   id int(10) unsigned NOT NULL auto_increment,  
  4.  
  5.   userid varchar(32) NOT NULL default '',  
  6.  
  7.   passwd varchar(32) NOT NULL default '',  
  8.  
  9.   uid smallint(6) NOT NULL default '5500',  
  10.  
  11.   gid smallint(6) NOT NULL default '5500',  
  12.  
  13.   homedir varchar(255) NOT NULL default '',  
  14.  
  15.   shell varchar(16) NOT NULL default '/sbin/nologin',  
  16.  
  17.   count int(11) NOT NULL default '0',  
  18.  
  19.   accessed datetime NOT NULL default '0000-00-00 00:00:00',  
  20.  
  21.   modified datetime NOT NULL default '0000-00-00 00:00:00',  
  22.  
  23.   PRIMARY KEY (id),  
  24.  
  25.   UNIQUE KEY userid (userid)  
  26.  
  27.   ) TYPE=MyISAM COMMENT='ProFTP user table';  
  28.  
  29.   # 這邊是要建立一個 Group 和兩個帳號  
  30.  
  31.   INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');  
  32.  
  33.   INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'USERNAME', 'PASSWORD', 2001, 2001, '/home/www.demo.com', '/sbin/nologin', 0, '', '');  
  34.  
  35.   INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (2, 'USERNAME2', 'PASSWORD2', 2002, 2001, '/home/www.demo2.com', '/sbin/nologin', 0, '', '');  
  36.  
  37.   quit; # 離開 MySQL  
  38.  

  四、建立使用者 FTP 登入后的目錄環境

  1.   mkdir /home/www.demo.com  
  2.  
  3.   mkdir /home/www.demo2.com  
  4.  
  5.   chown ftpuser:ftpgroup /home/www.demo.com  
  6.  
  7.   chown ftpuser:ftpgroup /home/www.demo2.com  
  8.  

  五、修改 Proftpd 設定, 讀取 MySQL 當帳號來源

  1.   vim /etc/proftpd/proftpd.conf  
  2.  
  3.   UseIPv6 on => UseIPv6 off  
  4.  
  5.   # 不加這行, 此帳號就存取到根目錄的所有資源  
  6.  
  7.   DefaultRoot ~  
  8.  
  9.   RootLogin off  
  10.  
  11.   RequireValidShell off  
  12.  
  13.   # The passwords in MySQL are encrypted using CRYPT  
  14.  
  15.   SQLAuthTypes Plaintext Crypt  
  16.  
  17.   SQLAuthenticate users groups  
  18.  
  19.   SQLConnectInfo ftp@localhost proftpd ftp_password  
  20.  
  21.   SQLUserInfo ftpuser userid passwd uid gid homedir shell  
  22.  
  23.   SQLGroupInfo ftpgroup groupname gid members  
  24.  
  25.   SQLLog PASS updatecount  
  26.  
  27.   SQLNamedQuery updatecount UPDATE "countcount=count+1, accessed=now() WHERE userid='%u'" ftpuser  
  28.  
  29.   SQLLog STOR,DELE modified  
  30.  
  31.   SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser  
  32.  
  33.   #SQLLogFile /var/log/sql.log  
  34.  
  35.   #SQLMinID 500  
  36.  
  37.   # 如果使用這帳號的 Home Directory 不存在的話, 會自動去建立  
  38.  
  39.   #SQLHomedirOnDemand on  
  40.  

  六、設定 Proftpd 載入的模組

  1.   vim /etc/proftpd/modules.conf  
  2.  
  3.   #LoadModule mod_sql_postgres.c # 不用載入 PostgreSQL 的 Module  
  4.  

  七、重新啟動 Proftpd 即完成

  1.   /etc/init.d/proftpd restart # 重新啟動 Proftpd即可  
  2.  

  八、快速 開帳號 的步驟

  1.   INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (3, 'USERNAME', 'PASSWORD', 2003, 2001, '/home/www.demo.com', '/sbin/nologin', 0, '', '');  
  2.  
  3.   (修改 3, 'USERNAME', 'PASSWORD', 2003, '/home/www.demo.com' 這些值即可.)  
  4.  
  5.   mkdir /home/www.demo.com # 建目錄  
  6.  
  7.   chown ftpuser:ftpgroup /home/www.demo.com # 改權限  
  8.  

  這樣子就完成啰~

  九、FTP 要限制使用容量(Quota)

  以下只是做筆記, 尚未測試.

  MySql 加這兩個 Table 和 資料:

 

  1.   CREATE TABLE ftpquotalimits (  
  2.  
  3.   name varchar(30) default NULL,  
  4.  
  5.   quota_type enum('user','group','class','all') NOT NULL default 'user',  
  6.  
  7.   per_session enum('false','true') NOT NULL default 'false',  
  8.  
  9.   limit_type enum('soft','hard') NOT NULL default 'soft',  
  10.  
  11.   bytes_in_avail int(10) unsigned NOT NULL default '0',  
  12.  
  13.   bytes_out_avail int(10) unsigned NOT NULL default '0',  
  14.  
  15.   bytes_xfer_avail int(10) unsigned NOT NULL default '0',  
  16.  
  17.   files_in_avail int(10) unsigned NOT NULL default '0',  
  18.  
  19.   files_out_avail int(10) unsigned NOT NULL default '0',  
  20.  
  21.   files_xfer_avail int(10) unsigned NOT NULL default '0'  
  22.  
  23.   ) TYPE=MyISAM;  
  24.  
  1.   CREATE TABLE ftpquotatallies (  
  2.  
  3.   name varchar(30) NOT NULL default '',  
  4.  
  5.   quota_type enum('user','group','class','all') NOT NULL default 'user',  
  6.  
  7.   bytes_in_used int(10) unsigned NOT NULL default '0',  
  8.  
  9.   bytes_out_used int(10) unsigned NOT NULL default '0',  
  10.  
  11.   bytes_xfer_used int(10) unsigned NOT NULL default '0',  
  12.  
  13.   files_in_used int(10) unsigned NOT NULL default '0',  
  14.  
  15.   files_out_used int(10) unsigned NOT NULL default '0',  
  16.  
  17.   files_xfer_used int(10) unsigned NOT NULL default '0'  
  18.  
  19.   ) TYPE=MyISAM;  
  20.  
  21.   INSERT INTO `ftpquotalimits` (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`, `bytes_xfer_avail`, `files_in_avail`, `files_out_avail`, `files_xfer_avail`) VALUES ('exampleuser', 'user', 'true', 'hard', 15728640, 0, 0, 0, 0, 0);  
  22.  
  23.   INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'USERNAME', 'PASSWORD', 2001, 2001, '/home/www.example.com', '/sbin/nologin', 0, '', '');  
  24.  

  十、修改 Proftpd 設定

  以支援 MySQL 的 Quote data

  1.   vim /etc/proftpd/proftpd.conf 加入  
  2.  
  3.   # User quotas  
  4.  
  5.   # ===========  
  6.  
  7.   QuotaEngine on  
  8.  
  9.   QuotaDirectoryTally on  
  10.  
  11.   QuotaDisplayUnits Mb  
  12.  
  13.   QuotaShowQuotas on  
  14.  
  15.   SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"  
  16.  
  17.   SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"  
  18.  
  19.   SQLNamedQuery update-quota-tally UPDATE "bytes_in_usedbytes_in_used = bytes_in_used + %{0}, bytes_out_usedbytes_out_used = bytes_out_used + %{1}, bytes_xfer_usedbytes_xfer_used = bytes_xfer_used + %{2}, files_in_usedfiles_in_used = files_in_used + %{3}, files_out_usedfiles_out_used = files_out_used + %{4}, files_xfer_usedfiles_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies  
  20.  
  21.   SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies  
  22.  
  23.   QuotaLimitTable sql:/get-quota-limit  
  24.  
  25.   QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally  
  26.  
  27.   SQLNamedQuery gettally SELECT "ROUND((bytes_in_used/1048576),2) FROM ftpquotatallies WHERE name='%u'"  
  28.  
  29.   SQLNamedQuery getlimit SELECT "ROUND((bytes_in_avail/1048576),2) FROM ftpquotalimits WHERE name='%u'"  
  30.  
  31.   SQLNamedQuery getfree SELECT "ROUND(((ftpquotalimits.bytes_in_avail-ftpquotatallies.bytes_in_used)/1048576),2) FROM ftpquotalimits,ftpquotatallies WHERE ftpquotalimits.name = '%u' AND ftpquotatallies.name = '%u'"  
  32.  
  33.   SQLShowInfo LIST "226" "Used %{gettally}MB from %{getlimit}MB. You have %{getfree}MB available space."  
  34.  
  35.   RootLogin off  
  36.  
  37.   RequireValidShell off  
  38.  

  再來重新啟動 Proftpd: /etc/init.d/proftpd restart 就完成啰

【編輯推薦】

  1. Proftpd下 貼心小技巧
  2. Linux ProFTPd服務器配置(全)
  3. ProFTPD 下的五大問題
  4. ProFTPD 有問必答
  5. Debian Proftpd 的安裝設定
  6. 如何安裝ProFTPD
  7. ProFTPd服務器相關命令
責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-03-08 11:21:55

proftpdxinetd

2011-03-03 10:32:28

ProftpdMysql管理

2011-03-02 17:56:13

Xinetd啟動Proftpd

2011-02-22 15:09:32

ProFTPD服務器

2011-03-03 14:04:08

ProftpdFtp server

2011-05-16 09:44:40

Mysql

2011-03-03 09:40:58

2011-02-23 09:01:37

2011-03-03 09:26:59

ProFTPD服務器管理

2010-11-12 12:51:26

2011-02-22 14:26:04

ProFTPD

2011-02-25 14:48:25

ProftpdMySQL

2011-02-22 14:26:04

ProFTPD

2011-03-03 10:00:14

ProFTPD建立MySQL

2011-02-22 15:29:39

2011-03-03 10:06:13

ProftpdMysqlQuota

2011-03-08 15:47:57

Proftpdmysqlquota

2011-03-01 14:39:16

2011-02-24 13:55:42

ProFTPD

2011-03-02 17:42:09

Proftpd結構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 97人人澡人人爽91综合色 | 久久精品免费一区二区三 | 色综合av| 逼逼网 | 国产精品自在线 | 波多野结衣中文字幕一区二区三区 | 91精品国产91久久综合桃花 | 99国产精品视频免费观看一公开 | 日韩毛片 | 欧美日韩国产精品一区二区 | 亚洲综合色 | 国产成人免费观看 | 亚洲色片网站 | 涩涩视频大全 | 蜜桃视频一区二区三区 | 国产传媒| 国色天香成人网 | 中文字幕在线一区二区三区 | 久久精品二区亚洲w码 | 日韩欧美大片 | 自拍偷拍中文字幕 | 日韩精品一区二区三区在线播放 | 狠狠的日| 国产精品欧美一区二区三区 | 亚洲精品一区二区三区中文字幕 | 久久久久久久久淑女av国产精品 | va在线| 最新中文字幕在线 | 亚洲国产成人精 | 在线日韩av电影 | 国产成人精品一区二区三区在线 | 欧美一区二区三区在线播放 | 一区二区三区 在线 | 国产婷婷精品 | 欧美亚洲综合久久 | 亚洲精品在线看 | 欧美在线a| 中文字幕日韩欧美一区二区三区 | 久久网站免费视频 | 国产剧情一区 | 亚洲人成人一区二区在线观看 |