自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下VsFTP和ProFTP用戶管理高級(jí)技巧

原創(chuàng)
運(yùn)維 系統(tǒng)運(yùn)維
FTP服務(wù)時(shí)互聯(lián)網(wǎng)上比較古老的一種應(yīng)用,至今Interner應(yīng)用面非常廣泛,但令管理員頭痛不已的是其用戶管理,既多且雜,如何解決這一問題呢?使用MySQL與ProFTP或VsFTP軟件結(jié)合可以搭建一個(gè)高效、穩(wěn)定且集中管理的FTP服務(wù)器。

 【51CTO原創(chuàng)】FTP服務(wù)時(shí)互聯(lián)網(wǎng)上比較古老的一種應(yīng)用,至今Interner應(yīng)用面非常廣泛,但令管理員頭痛不已的是其用戶管理,既多且雜,如何解決這一問題呢?使用MySQL與ProFTP或VsFTP軟件結(jié)合可以搭建一個(gè)高效、穩(wěn)定且集中管理的FTP服務(wù)器。本來就來介紹一下如何搭建一個(gè)方便管理的基于MySQL數(shù)據(jù)庫的FTP服務(wù)器。
一、軟件版本的選擇:
搭建基于數(shù)據(jù)庫的FTP服務(wù)器首先要選擇合適的軟件。下面就是所選擇軟件的詳細(xì)信息:
◆Linux版本RHEL5;
◆MySQL版本MySQL-standard-5.1.30-1.rhel5.src.rpm;
◆FTP服務(wù)器proftpd-1.3.2.tar.gz和vsftpd-2.2.1.tar.gz;
◆MySQL的PAM驗(yàn)證程序pam_mysql-0.8RC1.tar.gz;
    需要說明的是,RHEL5安裝時(shí)自定義安裝,“development tools”項(xiàng)必須選擇,否則編譯調(diào)試軟件時(shí)需要的軟件包需另行安裝;其次,要確保所安裝Linux系統(tǒng)時(shí)沒有安裝MySQL與FTP服務(wù)器等軟件,如果有則先卸載;再次,ProFTPD與VsFTPD兩者不要在同臺(tái)計(jì)算機(jī)同時(shí)使用,這樣會(huì)造成意想不到的問題,讀者根據(jù)自己的需求和軟件的具體功能選擇其中之一。
建立程序安裝目錄
整個(gè)安裝過程以root用戶執(zhí)行如下命令:
    #cd /soft/programe
    #mkdir mysq
  需要注意目錄名稱的大小寫。
    #mkdir proftpd
    #mkdir pam_mods
MySQL的安裝目錄為/soft/program/mysql,ProFTPD的安裝目錄為/soft/program/proftpd,pam_mysq1.so的安裝目錄為/soft/program/pam_mods,/storage是一個(gè)已經(jīng)存在的目錄,所有的FTP用戶上傳和下載文件都存放在這里。
安裝MySQL
◆ 增加一個(gè)管理MySQL的用戶和組:
#groupadd mysqlgrp
#useradd  -g mysqlgrp mysqladm
#passwd  mysqladm
◆ 切換到MySQL-stan-dard-5.1.30-1.rhel5.src.rpm文件所在的目錄,執(zhí)行以下步驟安裝:
#rpm-ivh MySQL-stan-dard-5.1.30-1.rhel5.src.rpm
此條命令解壓出mysql-5.1.30.tar.gz文件存放在以下的目錄中。
#cd /usr/src/redhat/SOURCE
#tar zxvf mysqt-5.1.30.tar.gz
#cd mysql-5.1.30
#./configure Prefix=/soft/program/mysql --with-extra-charsets=all
其中,“--prefix=/soft/program/mysql”參數(shù)是用來指定Mysql的安裝目錄,“--with-extra-charsets=all”是用來支持所有的字符集。
#make
#make install
◆ 初始化數(shù)據(jù)庫
#cd /soft/program/mysql/bin
#./mysql_install_db
◆ 為了安全要修改數(shù)據(jù)庫存放目錄的屬主信息和訪問模式/soft/program/mysqll/var為數(shù)據(jù)庫存放的缺省目錄
#cd /soft/program/mysql
#chown –R mysqladm:mysqlgrp var
#chmod -R go-wrx var
◆ 修改配置文件
#cd /soft/program/mysql/share/mysql
#cp my-small.cnf /etc/my.cnf
#cd /etc
在my.cnf文件中,增加如下內(nèi)容:
[mysql]
user=mysqladm  #表示用mysqladm 用戶啟動(dòng)MySQL#
default-character-set=utf8  #表示使用UTF-8字符集,此種字符集通用性較好,也很好的支持中文,當(dāng)然也可以直接使用GBK。
 [clent]
Default-character-set=utf8
◆ 啟動(dòng)
啟動(dòng)方式有兩種,一種是手工啟動(dòng),一種是自動(dòng)啟動(dòng),其中手工啟動(dòng)的操作如下:
#cd /soft/program/mysql/bin
#./mysqld_safe&
自動(dòng)啟動(dòng)則需要在/etc/rc.d/rc/local中加入以下的內(nèi)容,開機(jī)自動(dòng)啟動(dòng)MySQL數(shù)據(jù)庫:
If [-x /soft/program/mysql/bin/mysqld_safe]; then
    install_path_name /bin/mysqld_safe&
fi
◆ 修改管理員密碼
使用如下命令修改數(shù)據(jù)庫密碼:
#cd /soft/program/mysql/bin
#./mysqladmin -h localhost -u root password '123456'
上述命令的意思是本機(jī)上(-h host)使用的管理數(shù)據(jù)庫的缺省管理賬號(hào)root。需要注意的事,此root并非Linux系統(tǒng)中的root用戶,密碼設(shè)置為123456. #p#

安裝ProFTPD
◆切換到proftpd-1.3.2.tar.gz文件所在的目錄,執(zhí)行以下步驟安裝:
#tar zxvf proftpd-1.3.2.tar.gz
#cd proftpd-1.3.2
#./configure--prefix=/soft/program/proftpd --with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql
此參數(shù)將支持MySQL和Quota模塊添加進(jìn)來。
--with-includes=/soft/program/mysql/include/mysql
上述參數(shù)指定MySQL中include的目錄路徑。
--with-libraries=/soft/program/mysql/lib/mysql
此參數(shù)指定MySQL中l(wèi)ib的目錄路徑。
#make
#make install
使用如下命令建立一個(gè)用于管理ProFTPD的Linux系統(tǒng)賬號(hào)和組。
#groupadd  -g  2009 ftpgroup
#useradd -u 2009 –s /bin/false -d /storage -g ftpgroup ftpuser
#chown  -R  ftpuser.ftpgroup /storage
#chmod –R go-wrx- /storage
#chmod –R u+wrx /storage
簡(jiǎn)單修改ProFTPD配置文件,使之正常運(yùn)行:
#cd /soft/program/proftpd/etc
用編輯器打開proftpd.conf,修改一下的內(nèi)容:
#Set the user and group under which the server will run.
User    ftpuser
Group   ftpgroup
◆啟動(dòng)ProFTPD
啟動(dòng)Proftpd同樣有兩種方法,即手工啟動(dòng)和自動(dòng)啟動(dòng),其中手工啟動(dòng)操作如下:
#cd /soft/program/proftpd/sbin/
#./proftpd
此時(shí)一個(gè)基本的FTP服務(wù)器已經(jīng)搭建成,可以進(jìn)行測(cè)試了。需要注意的是,啟動(dòng)時(shí)如果出現(xiàn)具有以下信息的錯(cuò)誤:
error while loading shared libraries:libmysqlclient.so.15:cannot open shared object file:No such file or directory
通常的解決辦法如下:
#cd  /etc
用文本工具打開ld.so.conf,添加以下的內(nèi)容/soft/program/mysql/lib/mysql
#ldconflg
更新ld.so cache file。
要讓ProFTPD自動(dòng)啟動(dòng)在/etc/rc.d/rc.local中加入以下的內(nèi)容,開機(jī)即可自啟動(dòng)ProFTPD:
/soft/program/proftpd/sbin/proftpd

二、MySQL與ProFTPD組合
   在MySQL 中建立一個(gè)名為ftp的數(shù)據(jù)庫,在該數(shù)據(jù)庫中建立以下的四個(gè)表:
   ◆登錄FTP服務(wù)器的用戶表ftpusers,字段信息如下所示,這些字段是必需的,其他字段根據(jù)自己的需要添加,參考字段如下:
'userid' text NOT NULL            #用戶登錄賬號(hào)#
'passwd' text NOT NULL           #用戶登錄密碼#
'uid' int(11)NOT NULL default '2009', #與Linux系統(tǒng)賬號(hào)ftpuser的UID號(hào)一致#
'gid' int(11)NOT NULL default '2009', #與Linux系統(tǒng)組#
ftpgroup 的GID號(hào)一致'homedir' text,用戶文件上傳下載目錄,如賬號(hào)名為abc,此處就填寫/storage/abc,'shell' text default ,'/sbin/nologin'這個(gè)是用來指定用戶是否能登錄Linux系統(tǒng),這里默認(rèn)的是不能登錄。
◆FTP用戶歸屬表ftpgroups,字段信息如下所示,關(guān)于建立該組的目的將在quotalimits表中說明
'groupname' text  NOT NULL      #組名#
'gid' smallint(6) NOT NULL default'0',#組的id號(hào)#
'memembers' text NOT NULL      #成員#
◆用于設(shè)置磁盤限額相關(guān)信息的表quotalimits和quotatallies,這兩個(gè)表的字段請(qǐng)不要改動(dòng),它是與ProFTPD的配置文件緊密聯(lián)系,quotalimits表的字段信息如下:
'name' varchar(30)default NULL,
'quota_type' enum('user','group','class','all')NOT NULL default 'user',
'per_session' enum('false','true')NOT NULL default'false',
'limit_type' enum('soft','hard')NOT NULL default'soft',
'bytes_in_avail'float NOT NULL default'0',
'bytes_out_avail'float NOT NULL default'0',
'bytes_xfer_avail'float NOT NULL default'0',
'files_in_avail'int(10) unsigned NOT NULL default'0',
'files_out_avail'int(10)unsigned NOT NULL default'0',
'files_xfer_avail'int(10)unsigned NOT NULL default'0'
需要注意的是,name應(yīng)該這樣理解,既能表示單個(gè)用戶,也能表示用戶組名。如果在quota_type(限額類型)中使用group來認(rèn)證的話,那就得在這里設(shè)置組名,這樣整組都具有統(tǒng)一的磁盤限額的特性,當(dāng)然要在ftpgroups表中插入組記錄,并且在member字段中得把用戶一個(gè)一個(gè)的列進(jìn)去。默認(rèn)值可以為空NULL。如果為空,則針對(duì)所在有quota_type中設(shè)置的類型,比如在quota_type中設(shè)置為user,就是針對(duì)所有ftpusers中的用戶起作用,如果是group名,也是對(duì)ftpgroups所有組作用。quota_type磁盤限額類型,可以設(shè)置為用戶,也可以設(shè)置為用戶組group。如果name寫的是用戶組,這里就得設(shè)置為group來認(rèn)定。默認(rèn)為user認(rèn)證。per_session默認(rèn)為false.limit_type默認(rèn)為soft。Bytes_in_avail用戶占用空間大小,也就是FTP用戶空間容量,單位是byte,默認(rèn)為0,0是不受限制,以下同理。bytes_out_avail所有下載文件的總和,默認(rèn)為0。
     bytes_xfer_avail一個(gè)用戶上傳下載流量總和,默認(rèn)為0。files_in_avail限制上傳文件總和,默認(rèn)為0。files_out_avail限制下載文件個(gè)數(shù)總計(jì),默認(rèn)為0。files_xfer_avail允許下載和上傳的文件總和,默認(rèn)為0。Quotatallies表的字段信息,各字段信息參照quotalimits。配置參考參數(shù)如下:
name  VARCHAR(30)NOT NULL,
quota_type ENUM("user","group","class","all")NOT NULL,
bytes_in_used FLOAT NOT NULL,
bytes_out_used FLOAT NOT NULL,
bytes_xfer_used FLOAT NOT NULL,
files_in_used INT UNSIGNED NOT NULL,
files_out_used INT UNSIGNED NOT NULL,
files_xfer_used INT UNSIGNED NOT NULL
此外,在proftpd.conf文件中增加以下的內(nèi)容:
◆數(shù)據(jù)庫連接的信息,ftp是數(shù)據(jù)庫名,localhost是主機(jī)名,root是連接數(shù)據(jù)庫的用戶名,123456是密碼。
SQLConnectlnfoftp@localhost root 123456
◆數(shù)據(jù)庫認(rèn)證的類型,Plaintext表示明文認(rèn)證方式
SQLAuthTYpes Backend Plaintext
◆指定用來做用戶認(rèn)證的表的有關(guān)信息
SALUserlnfo ftpusers userid passwd uid gid homedir shell
SQLGrouplnfo ftpgroups groupname gid members
◆校驗(yàn)數(shù)據(jù)表
SQLAuthenticate users groups usersetfast groupsetfast
◆如果home目錄不存在,則系統(tǒng)會(huì)根據(jù)ftpusers表中的home字段。
新建一個(gè)目錄:
SQLHomedirOnDemand on
◆打開磁盤限額引擎
QuotaEngine on
◆設(shè)置磁盤限額
QuotaDirectoryTally on
◆設(shè)置磁盤容量顯示時(shí)的單位
QuotaDisplayUnits Mb
◆設(shè)置磁盤限額日志文件
QuotaLog”/usr/local/proftpd/var/quota”
◆顯示磁盤限額信息
ftp登錄后可執(zhí)行quote site quota命令查看當(dāng)前磁盤使用情況:
QuotaShowQuotas on
◆設(shè)置磁盤限額日志文件
QuotaLog”/var/log/quota”
◆指定磁盤限額模塊使用的數(shù)據(jù)庫信息
SQLNamedQuer get-quota-limit SELECT "name,quota_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail FROM quotalimits WHERE name='%{0}'AND quota_type='%{1}'"
SQLNamedQuery get-quota-tally SELECT"name,quota_type,bytes_in_used,bytes_out_used,bytes_xfer_used,files_in_used,files_out_used,filed_xfer_used,FROM quotatallies WHERE name='%{0}'AND quota_type ='%{1}"
SQLNamedQuery update-quota-tally UPDATE"bytes_in_used =bytes_in_used+%{0},bytes_out_used=bytes_out_used+%{1},bytes_xfer_used=bytes_xfer_used+%{2},files_in_used=files_in_used+%{3},files_out_used=files_out_used+%{4},files_xfer_used =files_xfer_used+%{5} WHERE name='%{6}'AND quota_type = '%{7}'" quotatallies
SQLNamedQuery insert-quota-tally INSERT"%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}"quotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
另外,讀者還可以在proftpd.conf中添加一些有關(guān)超時(shí)、限制連接次數(shù)、加快連接速度、支持?jǐn)帱c(diǎn)傳輸及安全傳輸?shù)葍?nèi)容。

#p#

三、VsFTPD與MySQL的組合
◆安裝前準(zhǔn)備工作
安裝前需要注意的是,VsFTPD默認(rèn)配置中需要“nobody”用戶,確保Linux系統(tǒng)中有該用戶。VsFTPD默認(rèn)配置中需要“/usr/share/empty”目錄,確保Linux系統(tǒng)中有此目錄。
VsFTPD提供匿名FTP服務(wù)時(shí),需要“ftp”用戶和一個(gè)有效的匿名目錄/var/ftp,使用下列命令建立用戶、目錄和目錄的相關(guān)安全設(shè)置。匿名目錄也可以改成自己喜歡的目錄并使匿名用戶具有讀寫權(quán)限。
#useradd -d /var/ftp ftp
#chown root.root /var/ftp
#chmod og-w/var/ftp
◆切換到vsftpd-2.2.1.tar.gz文件所在的目錄執(zhí)行以下步驟安裝:
#tar zxvf vsftpd-2.2.1.tar.g
#cd vsftpd-2.2.1
#make
#make install
請(qǐng)將vsftpd-2.2.1目錄中已編譯好的二進(jìn)制文件、手冊(cè)等復(fù)制到相應(yīng)目錄 (如果該目錄中沒有以下的文件):
#cp vsftpd /usr/local/sbin/vsftpd
#cp vsftpd.conf /etc
#cp RedHat/vsftpd.pam /etc/pam.d/ftp
以下兩步是復(fù)制手冊(cè),可以不復(fù)制。
#cp vsftpd.conf.5 /usr/local/share/man/man5
#cp vsftpd.8 /usr/local/share/man/man8
◆以standalone模式運(yùn)行VsFTPD
首先在/etc/vsftpd.conf添加以下內(nèi)容:
Listen=YES
此參數(shù)行表示以獨(dú)立方式啟動(dòng)vsftpd進(jìn)程。此時(shí)匿名用戶已經(jīng)可以登錄,如果想要提供系統(tǒng)用戶登錄,把下列二行的注釋去掉,系統(tǒng)用戶的目錄就是建立賬號(hào)時(shí)設(shè)定的目錄:
Local_enable=YES
Write_enable=YES
◆啟動(dòng)VsFTPD
#cd /usr/local/sbin
#./vsftpd&
現(xiàn)在可以進(jìn)行測(cè)試了。
◆支持MySQL的VsFTPD
首先需要建立一個(gè)虛擬用戶對(duì)應(yīng)的Linux系統(tǒng)賬號(hào),可以使用如下命令來完成:
#useradd -s /bin/false –d/storage ftpuser
#passwd ftpuser
#chown –R ftpuser.ftpgroup /storage
#chmod –R go-wrx /storage
#chmod –R u+wrx /storage
◆數(shù)據(jù)庫表ftpusers,字段信息如下:
'userid' text NOT NULL #用戶登錄賬號(hào)#
'passwd' text NOT NULL #用戶登錄密碼#
需要注意的是,數(shù)據(jù)庫中必需授權(quán)ftpuser用戶可以讀ftp數(shù)據(jù)庫的ftpusers表,授權(quán)這一步一定要正確設(shè)置。
◆安裝MySQL的PAM驗(yàn)證程序;
#tar zvxf pam_mysql-0.8RC1.tar.gz
#cd pam_mysql-0.8RC1
#./configure --with-mysql=/soft/program/mysql --with-pam-mods-dir=/soft/program/pam_mods
上述參數(shù)行用來指定pam_mysql.so文件存放的目錄。
--with-openssl
使用此參數(shù)行后可以避免make時(shí)報(bào)有關(guān)md5.h的編譯錯(cuò)誤。
#make
#make install
◆修改/etc/vsftpd.conf打開或更改以下幾項(xiàng):
anonymous_enable=YES
local_enable=YES
guest_enable=YES
guest_username=ftpuser
打開這個(gè)參數(shù)后便允許虛擬用戶上傳文件、建立目錄等操作。
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
ascll_upload_enable=YES
ascll_download_enable=YES
VsFTPD配置文件中還可以進(jìn)行更多的設(shè)置,如磁盤配額、虛擬用戶個(gè)人目錄的建立、性能與負(fù)載控制、FTP被動(dòng)模式斷口設(shè)置、安全設(shè)置等,讀者根據(jù)自己的需要進(jìn)一步的完善。
◆編輯文件
修改/etc/pam.d/ftp中去掉其他的內(nèi)容,添加以下的內(nèi)容:
#auth
auth required/soft/program/pam_mods/pam_mysql.so
user=ftpuser passwd=6789host=localhost db=ftp
table=ftpusers usercolumn=userid passwdcolumn=passwd crypt=0
#account
Account required/soft/program/pam_mods/pam_mysql.so
User=ftpuser passwd=6789 host=localhost db=ftp table=ftpusers usercolumn=userid passwdcolumn=passwd crypt=0
涉及到的參數(shù),只要對(duì)應(yīng)前面數(shù)據(jù)庫的設(shè)置就可以明白它們的含義。其中:crypt=0,口令以明文方式(不加密)保存在數(shù)據(jù)庫中,crypt=1,口令使用Unix系統(tǒng)的DES加密方式加密后保存在數(shù)據(jù)庫中;crypt=2,口令經(jīng)過MySQL的password()函數(shù)加密后保存。FTP數(shù)據(jù)庫中ftpusers表的授權(quán)用戶ftpusers和密碼必須正確設(shè)置。
◆開機(jī)自啟動(dòng)VsFTPD
請(qǐng)將vsftpd-2.2.1/xinetd.d/vsftpd文件制到/etc/xinetd.d/中(如果該目錄中沒有該文件)。此外,還需設(shè)置vsftpd.conf中l(wèi)isten和Tcp_Wrappers參數(shù),將其都設(shè)置為NO,最后,用ntsysv命令,選中Vsftpd守護(hù)進(jìn)程即可。
通過上面的知識(shí),結(jié)合Apache、PHP等軟件可以開發(fā)許多功能,如自動(dòng)申請(qǐng)主頁空間等,而且使用phpMyAdmin可以以Web方式管理MySQL,很容易的添加和刪除用戶,這樣FTP用戶管理就輕松多了。

【編輯推薦】

  1. 用Linux構(gòu)建高效FTP服務(wù)器
  2. 配置記錄FTP傳輸情況的Linux FTP服務(wù)器
  3. FTP服務(wù)器中將Linux用戶限制在自己目錄下
責(zé)任編輯:龐桂玉 來源: 51CTO原創(chuàng)
相關(guān)推薦

2013-01-09 10:14:34

2011-02-25 11:29:33

ProFTP參數(shù)

2011-02-23 13:26:18

Linuxvsftp

2011-02-25 10:16:55

ubuntuproftp安裝

2011-01-14 12:43:58

2009-10-23 08:41:14

Linux系統(tǒng)操作系統(tǒng)Grub

2018-06-18 10:33:39

Linux內(nèi)網(wǎng)技巧

2013-09-26 11:08:56

2009-11-26 18:07:10

vsftp建FTP

2009-12-03 10:03:18

Ubuntuvsftp

2009-09-17 17:55:31

2014-07-28 10:27:37

linux集群

2009-02-18 19:54:49

vsftp下載速度限制用戶

2023-12-15 08:51:48

2014-08-01 12:57:31

linuxheartbeatlvs

2014-08-14 15:38:33

linux集群

2011-01-11 14:06:39

2011-12-08 09:40:06

虛擬化vmwareVMware Fusi

2012-11-15 10:49:33

網(wǎng)絡(luò)管理WAN以太網(wǎng)

2009-06-16 09:15:34

WebminLinux用戶管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)