szhswl
          宋針還的個(gè)人空間
          本文檔基于RedHat Linux 9和VSFTPD-1.1.3-8。如果有不同版本,則有專(zhuān)門(mén)文字說(shuō)明。

          1、VSFTPD簡(jiǎn)述

            如果試問(wèn)哪種FTP服務(wù)器最安全?那么在UNIX和Linux中,首推的就是VSFTP(Very Secure FTP Daemon,非常安全的FTP服務(wù)器)。顧名思義,VSFTPD設(shè)計(jì)的出發(fā)點(diǎn)就是安全性。同時(shí)隨著版本的不斷升級(jí),VSFTPD在性能和穩(wěn)定性上也取得了極大的進(jìn)展。象RedHat、SUSE、Debian、GNU、GNOME、KDE等一些大型站點(diǎn)都采用VSFTPD作為它們的FTP服務(wù)器。大家可以到http://vsftpd.beasts.org/了解它的最新情況。

          2、VSFTPD的安裝

          2.1、RHL9+vsftpd-.1.1.3-8.i386.rpm包的安裝

            VSFTPD的安裝很簡(jiǎn)單。在RHL9中,在圖形界面下依次執(zhí)行“Main Menu”-“System Settings”-“Add/Remove Applications”-選擇FTP服務(wù)器-“更新”,或者在字符界面中執(zhí)行以下命令,就可以完成安裝。
            rpm -ivh vsftpd-1.1.3-8.i386.rpm

          2.2、vsftpd-1.2.0.tar.gz的安裝

            ⑴準(zhǔn)備條件

            VSFTPD默認(rèn)配置中需要“nobody”用戶(hù)。在系統(tǒng)中添加此用戶(hù),如果用戶(hù)已經(jīng)存在,useradd命令有相應(yīng)提示。
            [root@hpe45 root]# useradd nobody
            useradd: user nobody exists

            VSFTPD默認(rèn)配置中需要“/usr/share/empty”目錄。在系統(tǒng)中此目錄,如果目錄已經(jīng)存在,mkdir命令有相應(yīng)提示。
            [root@hpe45 root]# mkdir /usr/share/empty/
            mkdir: cannot create directory '/usr/share/empty': File exists

            VSFTPD提供匿名FTP服務(wù)時(shí),需要“ftp”用戶(hù)和一個(gè)有效的匿名目錄。
            [root@hpe45 root]# mkdir /var/ftp/
            [root@hpe45 root]# useradd -d /var/ftp ftp
            接下來(lái)的操作對(duì)于ftp用戶(hù)是否已經(jīng)存在都是有用的。
            [root@hpe45 root]# chown root.root /var/ftp
            [root@hpe45 root]# chmod og-w /var/ftp

            ⑵編譯VSFTPD

            從官方站點(diǎn)下載到/root目錄,執(zhí)行以下命令:
            [root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz
            [root@hpe45 root]# cd vsftpd-1.2.0
            [root@hpe45 vsftpd-1.2.0]# make

            ⑶安裝編譯好的VSFTPD

            執(zhí)行“make install”將編譯好的二進(jìn)制文件、手冊(cè)等復(fù)制到相應(yīng)目錄。在RHL9上,可能需要手動(dòng)執(zhí)行以下復(fù)制:
            [root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd
            [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5
            [root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8
            此外,“make install”沒(méi)有復(fù)制簡(jiǎn)單的配置文件,建議執(zhí)行以下命令:
            [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc

            ⑷為本地用戶(hù)設(shè)置PAM

            如果允許本地用戶(hù)登錄VSFTPD,執(zhí)行以下操作:
            [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp

          3、VSFTPD的文件結(jié)構(gòu)

            VSFTPD的文件結(jié)構(gòu)是很簡(jiǎn)潔的,主要包括:
            /usr/sbin/vsftpd ---- VSFTPD的主程序
            /etc/rc.d/init.d/vsftpd ---- 啟動(dòng)腳本
            /etc/vsftpd/vsftpd.conf ---- 主配置文件
            /etc/pam.d/vsftpd ---- PAM認(rèn)證文件
            /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶(hù)列表文件
            /etc/vsftpd.user_list ---- 禁止或允許使用VSFTPD的用戶(hù)列表文件
            /var/ftp ---- 匿名用戶(hù)主目錄
            /var/ftp/pub      ---- 匿名用戶(hù)的下載目錄
            此外,還有一些說(shuō)明文檔和手冊(cè)文件。

            此外VSFTPD的日志文件位于/etc/logrotate.d/vsftpd.log。

          4、VSFTPD的啟動(dòng)與停止

            VSFTPD可以單獨(dú)(Standalone)方式運(yùn)行,如同httpd、named這類(lèi)的服務(wù)器的運(yùn)行方式,這是RHL9中默認(rèn)的方式;也可以采用xinetd方式運(yùn)行,這是RHL7.x、8中的默認(rèn)方式。具體的運(yùn)行方式由參數(shù)listen決定。從RHL中VSFTPD的運(yùn)行方式,也可以看出VSFTPD的逐步發(fā)展。

            當(dāng)listen參數(shù)值為YES時(shí),RHL9中的默認(rèn)值,VSFTPD單獨(dú)運(yùn)行,我們可以使用腳本/etc/rc.d/init.d/vsftpd來(lái)啟動(dòng)、關(guān)閉以及重啟VSFTPD。命令如下:
            /etc/rc.d/init.d/vsftpd start|stop|restart

            如果說(shuō)在RHL9上,您還希望使用Xinetd啟動(dòng)VSFTPD的運(yùn)行方式,那么首先要將vsftpd.conf配置文件中的listen參數(shù)值改為NO。其次,生成一個(gè)/etc/xinetd.d/vsftpd文件,內(nèi)容如下:
            service vsftpd
            {
            disable = no
            socket_type = stream
            wait = no
            user = root
            server = /usr/sbin/vsftpd
            port = 21
            log_on_success += PID HOST DURATION
            log_on_failure += HOST
            }
            通過(guò)修改disable值為no或yes,并重新啟動(dòng)xinetd,從而啟動(dòng)或停止VSFTPD。

            由于VSFTPD的單獨(dú)模式已經(jīng)擁有足夠的能力,所以后面6中討論到的應(yīng)用,都是以單獨(dú)模式來(lái)運(yùn)行的,而非Xinetd方式。

            注:還可以直接執(zhí)行vsftpd來(lái)啟動(dòng)FTP服務(wù),關(guān)閉時(shí)使用“kill”命令。
            [root@hpe45 root]# /usr/local/sbin/vsftpd &

          5、VSFTPD的設(shè)置選項(xiàng)

            VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是個(gè)文本文件。以“#”字符開(kāi)始的行是注釋行。每個(gè)選項(xiàng)設(shè)置為一行,格式為“option=value”,注意“=”號(hào)兩邊不能留空白符。除了這個(gè)主配置文件外,還可以給特定用戶(hù)設(shè)定個(gè)人配置文件,具體介紹見(jiàn)后。
            VSFTPD包中所帶的vsftpd.conf文件配置比較簡(jiǎn)單,而且非常偏執(zhí)狂的(文檔自稱(chēng):-))。我們可以根據(jù)實(shí)際情況對(duì)其進(jìn)行一些設(shè)置,以使得VSFTPD更加可用。

          5.1、連接選項(xiàng)

            本部分主要是一些與建立FTP鏈接相關(guān)的選項(xiàng)。

          5.1.1、監(jiān)聽(tīng)地址與控制端口

            listen_address=ip address
            此參數(shù)在VSFTPD使用單獨(dú)(standalone)模式下有效。此參數(shù)定義了在主機(jī)的哪個(gè)IP地址上監(jiān)聽(tīng)FTP請(qǐng)求,即在哪個(gè)IP地址上提供FTP服務(wù)。對(duì)于只有一個(gè)IP地址的主機(jī),不需要使用此參數(shù)。對(duì)于多址主機(jī),不設(shè)置此參數(shù),則監(jiān)聽(tīng)所有IP地址。默認(rèn)值為無(wú)。

            listen_port=port_value
            指定FTP服務(wù)器監(jiān)聽(tīng)的端口號(hào)(控制端口),默認(rèn)值為21。此選項(xiàng)在standalone模式下生效。

          5.1.2、FTP模式與數(shù)據(jù)端口

            FTP 分為兩類(lèi),PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。這兩種FTP在建立控制連接時(shí)操作是一樣的,都是由客戶(hù)端首先和FTP服務(wù)器的控制端口(默認(rèn)值為21)建立控制鏈接,并通過(guò)此鏈接進(jìn)行傳輸操作指令。它們的區(qū)別在于使用數(shù)據(jù)傳輸端口(ftp-data)的方式。PORT FTP由FTP服務(wù)器指定數(shù)據(jù)傳輸所使用的端口,默認(rèn)值為20。PASV FTP由FTP客戶(hù)端決定數(shù)據(jù)傳輸?shù)亩丝凇ASV FTP這種做法,主要是考慮到存在防火墻的環(huán)境下,由客戶(hù)端與服務(wù)器進(jìn)行溝通(客戶(hù)端向服務(wù)器發(fā)出數(shù)據(jù)傳輸請(qǐng)求中包含了數(shù)據(jù)傳輸端口),決定兩者之間的數(shù)據(jù)傳輸端口更為方便一些。

            port_enable=YES|NO
            如果你要在數(shù)據(jù)連接時(shí)取消PORT模式時(shí),設(shè)此選項(xiàng)為NO。默認(rèn)值為YES。

            connetc_from_port_20=YES|NO
            控制以PORT模式進(jìn)行數(shù)據(jù)傳輸時(shí)是否使用20端口(ftp-data)。YES使用,NO不使用。默認(rèn)值為NO,但RHL自帶的vsftpd.conf文件中此參數(shù)設(shè)為YES。

            ftp_data_port=port number
            設(shè)定ftp數(shù)據(jù)傳輸端口(ftp-data)值。默認(rèn)值為20。此參數(shù)用于PORT FTP模式。

            port_promiscuous=YES|NO
            默認(rèn)值為NO。為YES時(shí),取消PORT安全檢查。該檢查確保外出的數(shù)據(jù)只能連接到客戶(hù)端上。小心打開(kāi)此選項(xiàng)。

            pasv_enable=YES|NO
            YES,允許數(shù)據(jù)傳輸時(shí)使用PASV模式。NO,不允許使用PASV模式。默認(rèn)值為YES。

            pasv_min_port=port number
            pasv_max_port=port number
            設(shè)定在PASV模式下,建立數(shù)據(jù)傳輸所可以使用port范圍的下界和上界,0 表示任意。默認(rèn)值為0。把端口范圍設(shè)在比較高的一段范圍內(nèi),比如50000-60000,將有助于安全性的提高。

            pasv_promiscuous=YES|NO
            此選項(xiàng)激活時(shí),將關(guān)閉PASV模式的安全檢查。該檢查確保數(shù)據(jù)連接和控制連接是來(lái)自同一個(gè)IP地址。小心打開(kāi)此選項(xiàng)。此選項(xiàng)唯一合理的用法是存在于由安全隧道方案構(gòu)成的組織中。默認(rèn)值為NO。

            pasv_address=
            此選項(xiàng)為一個(gè)數(shù)字IP地址,作為PASV命令的響應(yīng)。默認(rèn)值為none,即地址是從呼入的連接套接字(incoming connectd socket)中獲取。

          5.1.3 ASCII模式

            默認(rèn)情況下,VSFTPD是禁止使用ASCII傳輸模式。即使FTP客戶(hù)端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在實(shí)際傳輸文件時(shí),還是使用二進(jìn)制方式。下面選項(xiàng)控制VSFTPD是否使用ASCII傳輸模式。

            ascii_upload_enable=YES|NO
            控制是否允許使用ascii模式上傳文件,YES允許,NO不允許,默認(rèn)為NO。

            ascii_download_enable=YES|NO
            控制是否允許使用ascii模式下載文件,YES允許,NO不允許,默認(rèn)為NO。

          5.2、性能與負(fù)載控制

          5.2.1、超時(shí)選項(xiàng)

            idle_session_timeout=
            空閑(發(fā)呆)用戶(hù)會(huì)話的超時(shí)時(shí)間,若是超出這時(shí)間沒(méi)有數(shù)據(jù)的傳送或是指令的輸入,則會(huì)強(qiáng)迫斷線。單位為秒,默認(rèn)值為300。

            data_connection_timeout=
            空閑的數(shù)據(jù)連接的超時(shí)時(shí)間。默認(rèn)值為300 秒。

            accept_timeout=numerical value
            接受建立聯(lián)機(jī)的超時(shí)設(shè)定,單位為秒。默認(rèn)值為60。

            connect_timeout=numerical value
            響應(yīng)PORT方式的數(shù)據(jù)聯(lián)機(jī)的超時(shí)設(shè)定,單位為秒。默認(rèn)值為60。以上兩個(gè)選項(xiàng)針對(duì)客戶(hù)端的,將使客戶(hù)端空閑1分鐘后自動(dòng)中斷連接,并在中斷1分鐘后自動(dòng)激活連接。

          5.2.2 負(fù)載控制

            max_clients=numerical value
            此參數(shù)在VSFTPD使用單獨(dú)(standalone)模式下有效。此參數(shù)定義了FTP服務(wù)器最大的并發(fā)連接數(shù),當(dāng)超過(guò)此連接數(shù)時(shí),服務(wù)器拒絕客戶(hù)端連接。默認(rèn)值為0,表示不限最大連接數(shù)。

            max_per_ip=numerical value
            此參數(shù)在VSFTPD使用單獨(dú)(standalone)模式下有效。此參數(shù)定義每個(gè)IP地址最大的并發(fā)連接數(shù)目。超過(guò)這個(gè)數(shù)目將會(huì)拒絕連接。此選項(xiàng)的設(shè)置將影響到象網(wǎng)際快車(chē)這類(lèi)的多進(jìn)程下載軟件。默認(rèn)值為0,表示不限制。

            anon_max_rate=value
            設(shè)定匿名用戶(hù)的最大數(shù)據(jù)傳輸速度value,以Bytes/s為單位。默認(rèn)無(wú)。

            local_max_rate=value
            設(shè)定用戶(hù)的最大數(shù)據(jù)傳輸速度value,以Bytes/s為單位。默認(rèn)無(wú)。此選項(xiàng)對(duì)所有的用戶(hù)都生效。此外,也可以在用戶(hù)個(gè)人配置文件中使用此選項(xiàng),以指定特定用戶(hù)可獲得的最大數(shù)據(jù)傳輸速率。
            步驟如下:
            ①在vsftpd.conf中指定用戶(hù)個(gè)人配置文件所在的目錄,如:
            user_config_dir=/etc/vsftpd/userconf
            ②生成/etc/vsftpd/userconf目錄。
            ③用戶(hù)個(gè)人配置文件是在該目錄下,與特定用戶(hù)同名的文件,如:
            /etc/vsftpd/userconf/xiaowang
            ④在用戶(hù)的個(gè)人配置文件中設(shè)置local_max_rate參數(shù),如:
            local_max_rate=80000
            以上步驟設(shè)定FTP用戶(hù)xiaowang的最大數(shù)據(jù)傳輸速度為80KBytes/s。

            VSFTPD 對(duì)于速度控制的變化范圍大概在80%到120%之間。比如我們限制最高速度為100KBytes/s, 但實(shí)際的速度可能在80KBytes/s 到120KBytes/s 之間。當(dāng)然,若是線路帶寬不足時(shí),速率自然會(huì)低于此限制。

          5.3 用戶(hù)選項(xiàng)

            VSFTPD的用戶(hù)分為三類(lèi):匿名用戶(hù)、本地用戶(hù)(local user)以及虛擬用戶(hù)(guest)。

          5.3.1、匿名用戶(hù)

            anonymous_enable=YES|NO
            控制是否允許匿名用戶(hù)登錄,YES允許,NO不允許,默認(rèn)值為YES。

            ftp_username=
            匿名用戶(hù)所使用的系統(tǒng)用戶(hù)名。默認(rèn)下,此參數(shù)在配置文件中不出現(xiàn),值為ftp。

            no_anon_password=YES|NO
            控制匿名用戶(hù)登入時(shí)是否需要密碼,YES不需要,NO需要。默認(rèn)值為NO。
            
            deny_email_enable=YES|NO
            此參數(shù)默認(rèn)值為NO。當(dāng)值為YES時(shí),拒絕使用banned_email_file參數(shù)指定文件中所列出的e-mail地址進(jìn)行登錄的匿名用戶(hù)。即,當(dāng)匿名用戶(hù)使用banned_email_file文件中所列出的e-mail進(jìn)行登錄時(shí),被拒絕。顯然,這對(duì)于阻擊某些Dos攻擊有效。當(dāng)此參數(shù)生效時(shí),需追加banned_email_file參數(shù)

            banned_email_file=/etc/vsftpd.banned_emails
            指定包含被拒絕的e-mail地址的文件,默認(rèn)文件為/etc/vsftpd.banned_emails。

            anon_root=
            設(shè)定匿名用戶(hù)的根目錄,即匿名用戶(hù)登入后,被定位到此目錄下。主配置文件中默認(rèn)無(wú)此項(xiàng),默認(rèn)值為/var/ftp/。

            anon_world_readable_only=YES|NO
            控制是否只允許匿名用戶(hù)下載可閱讀文檔。YES,只允許匿名用戶(hù)下載可閱讀的文件。NO,允許匿名用戶(hù)瀏覽整個(gè)服務(wù)器的文件系統(tǒng)。默認(rèn)值為YES。

            anon_upload_enable=YES|NO
            控制是否允許匿名用戶(hù)上傳文件,YES允許,NO不允許,默認(rèn)是不設(shè)值,即為NO。除了這個(gè)參數(shù)外,匿名用戶(hù)要能上傳文件,還需要兩個(gè)條件:一,write_enable參數(shù)為YES;二,在文件系統(tǒng)上,F(xiàn)TP匿名用戶(hù)對(duì)某個(gè)目錄有寫(xiě)權(quán)限。

            anon_mkdir_write_enable=YES|NO
            控制是否允許匿名用戶(hù)創(chuàng)建新目錄,YES允許,NO不允許,默認(rèn)是不設(shè)值,即為NO。當(dāng)然在文件系統(tǒng)上,F(xiàn)TP匿名用戶(hù)必需對(duì)新目錄的上層目錄擁有寫(xiě)權(quán)限。

            anon_other_write_enable=YES|NO
            控制匿名用戶(hù)是否擁有除了上傳和新建目錄之外的其他權(quán)限,如刪除、更名等。YES擁有,NO不擁有,默認(rèn)值為NO。

            chown_uploads=YES|NO
            是否修改匿名用戶(hù)所上傳文件的所有權(quán)。YES,匿名用戶(hù)所上傳的文件的所有權(quán)將改為另外一個(gè)不同的用戶(hù)所有,用戶(hù)由chown_username參數(shù)指定。此選項(xiàng)默認(rèn)值為NO。

            chown_username=whoever
            指定擁有匿名用戶(hù)上傳文件所有權(quán)的用戶(hù)。此參數(shù)與chown_uploads聯(lián)用。不推薦使用root用戶(hù)。

          5.3.2、本地用戶(hù)

            在使用FTP服務(wù)的用戶(hù)中,除了匿名用戶(hù)外,還有一類(lèi)在FTP服務(wù)器所屬主機(jī)上擁有賬號(hào)的用戶(hù)。VSFTPD中稱(chēng)此類(lèi)用戶(hù)為本地用戶(hù)(local users),等同于其他FTP服務(wù)器中的real用戶(hù)。

            local_enable=YES|NO
            控制vsftpd所在的系統(tǒng)的用戶(hù)是否可以登錄vsftpd。默認(rèn)值為YES。

            local_root=
            定義所有本地用戶(hù)的根目錄。當(dāng)本地用戶(hù)登入時(shí),將被更換到此目錄下。默認(rèn)值為無(wú)。

            user_config_dir=
            定義用戶(hù)個(gè)人配置文件所在的目錄。用戶(hù)的個(gè)人配置文件為該目錄下的同名文件。個(gè)人配置文件的格式與vsftpd.conf格式相同。例如定義user_config_dir=/etc/vsftpd/userconf,并且主機(jī)上有用戶(hù)xiaowang,lisi,那我們可以在user_config_dir的目錄新增名為xiaowang、lisi的兩個(gè)文件。當(dāng)用戶(hù)lisi 登入時(shí),VSFTPD則會(huì)讀取user_config_dir下lisi這個(gè)文件中的設(shè)定值,應(yīng)用于用戶(hù)lisi。默認(rèn)值為無(wú)。

          5.3.3、虛擬用戶(hù)

            guest_enable=YES|NO
            若是啟動(dòng)這項(xiàng)功能,所有的非匿名登入者都視為guest。默認(rèn)值為關(guān)閉。

            guest_username=
            定義VSFTPD的guest用戶(hù)在系統(tǒng)中的用戶(hù)名。默認(rèn)值為ftp。

          5.4、安全措施

          5.4.1、用戶(hù)登錄控制

            pam_service_name=vsftpd
            指出VSFTPD進(jìn)行PAM認(rèn)證時(shí)所使用的PAM配置文件名,默認(rèn)值是vsftpd,默認(rèn)PAM配置文件是/etc/pam.d/vsftpd。

            /etc/vsftpd.ftpusers
            VSFTPD禁止列在此文件中的用戶(hù)登錄FTP服務(wù)器。這個(gè)機(jī)制是在/etc/pam.d/vsftpd中默認(rèn)設(shè)置的。

            userlist_enable=YES|NO
            此選項(xiàng)被激活后,VSFTPD將讀取userlist_file參數(shù)所指定的文件中的用戶(hù)列表。當(dāng)列表中的用戶(hù)登錄FTP服務(wù)器時(shí),該用戶(hù)在提示輸入密碼之前就被禁止了。即該用戶(hù)名輸入后,VSFTPD查到該用戶(hù)名在列表,VSFTPD就直接禁止掉該用戶(hù),不會(huì)再進(jìn)行詢(xún)問(wèn)密碼等后續(xù)步聚。默認(rèn)值為NO。

            userlist_file=/etc/vsftpd.user_list
            指出userlist_enable選項(xiàng)生效后,被讀取的包含用戶(hù)列表的文件。默認(rèn)值是/etc/vsftpd.user_list。

            userlist_deny=YES|NO
            決定禁止還是只允許由userlist_file指定文件中的用戶(hù)登錄FTP服務(wù)器。此選項(xiàng)在userlist_enable 選項(xiàng)啟動(dòng)后才生效。YES,默認(rèn)值,禁止文件中的用戶(hù)登錄,同時(shí)也不向這些用戶(hù)發(fā)出輸入口令的提示。NO,只允許在文件中的用戶(hù)登錄FTP服務(wù)器。
            
            tcp_wrappers=YES|NO
            在VSFTPD中使用TCP_Wrappers遠(yuǎn)程訪問(wèn)控制機(jī)制,默認(rèn)值為YES。

          5.4.2、目錄訪問(wèn)控制

            chroot_list_enable=YES|NO
            鎖定某些用戶(hù)在自家目錄中。即當(dāng)這些用戶(hù)登錄后,不可以轉(zhuǎn)到系統(tǒng)的其他目錄,只能在自家目錄(及其子目錄)下。具體的用戶(hù)在chroot_list_file參數(shù)所指定的文件中列出。默認(rèn)值為NO。

            chroot_list_file=/etc/vsftpd/chroot_list
            指出被鎖定在自家目錄中的用戶(hù)的列表文件。文件格式為一行一用戶(hù)。通常該文件是/etc/vsftpd/chroot_list。此選項(xiàng)默認(rèn)不設(shè)置。

            chroot_local_users=YES|NO
            將本地用戶(hù)鎖定在自家目錄中。當(dāng)此項(xiàng)被激活時(shí),chroot_list_enable和chroot_local_users參數(shù)的作用將發(fā)生變化,chroot_list_file所指定文件中的用戶(hù)將不被鎖定在自家目錄。本參數(shù)被激活后,可能帶來(lái)安全上的沖突,特別是當(dāng)用戶(hù)擁有上傳、shell訪問(wèn)等權(quán)限時(shí)。因此,只有在確實(shí)了解的情況下,才可以打開(kāi)此參數(shù)。默認(rèn)值為NO。

            passwd_chroot_enable
            當(dāng)此選項(xiàng)激活時(shí),與chroot_local_user選項(xiàng)配合,chroot()容器的位置可以在每個(gè)用戶(hù)的基礎(chǔ)上指定。每個(gè)用戶(hù)的容器來(lái)源于/etc/passwd中每個(gè)用戶(hù)的自家目錄字段。默認(rèn)值為NO。

          5.4.3、文件操作控制

            hide_ids=YES|NO
            是否隱藏文件的所有者和組信息。YES,當(dāng)用戶(hù)使用"ls -al"之類(lèi)的指令時(shí),在目錄列表中所有文件的擁有者和組信息都顯示為ftp。默認(rèn)值為NO。

            ls_recurse_enable=YES|NO
            YES,允許使用"ls -R" 指令。這個(gè)選項(xiàng)有一個(gè)小的安全風(fēng)險(xiǎn),因?yàn)樵谝粋€(gè)大型FTP站點(diǎn)的根目錄下使用"ls -R"會(huì)消耗大量系統(tǒng)資源。默認(rèn)值為NO。

            write_enable=YES|NO
            控制是否允許使用任何可以修改文件系統(tǒng)的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默認(rèn)值為NO,不過(guò)自帶的簡(jiǎn)單配置文件中打開(kāi)了該選項(xiàng)。

            secure_chroot_dir=
            這選項(xiàng)指向一個(gè)空目錄,并且ftp用戶(hù)對(duì)此目錄無(wú)寫(xiě)權(quán)限。當(dāng)vsftpd不需要訪問(wèn)文件系統(tǒng)時(shí),這個(gè)目錄將被作為一個(gè)安全的容器,用戶(hù)將被限制在此目錄中。默認(rèn)目錄為/usr/share/empty。

          5.4.4、新增文件權(quán)限設(shè)定

            anon_umask=
            匿名用戶(hù)新增文件的umask 數(shù)值。默認(rèn)值為077。

            file_open_mode=
            上傳檔案的權(quán)限,與chmod 所使用的數(shù)值相同。如果希望上傳的文件可以執(zhí)行,設(shè)此值為0777。默認(rèn)值為0666。

            local_umask=
            本地用戶(hù)新增檔案時(shí)的umask 數(shù)值。默認(rèn)值為077。不過(guò),其他大多數(shù)的FTP服務(wù)器都是使用022。如果您的用戶(hù)希望的話,可以修改為022。在自帶的配置文件中此項(xiàng)就設(shè)為了022。

          5.5、提示信息

            ftpd_banner=login banner string
            此參數(shù)定義了login banner string(登錄歡迎語(yǔ)字符串)。用戶(hù)可以自行修改。預(yù)設(shè)值為無(wú)。當(dāng)ftpd_banner設(shè)置后,將取代系統(tǒng)原來(lái)的歡迎詞。

            banner_file=/directory/vsftpd_banner_file
            此項(xiàng)指定一個(gè)文本文件,當(dāng)使用者登入時(shí),會(huì)顯示此該文件的內(nèi)容,通常為歡迎話語(yǔ)或是說(shuō)明。默認(rèn)值為無(wú)。與ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file選項(xiàng)將取代ftpd_banner選項(xiàng)。

            dirmessage_enable=YES|MO
            控制是否啟用目錄提示信息功能。YES啟用,NO不啟用,默認(rèn)值為YES。此功能啟用后,當(dāng)用戶(hù)進(jìn)入某一個(gè)目錄時(shí),會(huì)檢查該目錄下是否有message_file選項(xiàng)所指定的文檔,若是有,則會(huì)出現(xiàn)此文檔的內(nèi)容,通常這個(gè)檔案會(huì)放置歡迎話語(yǔ),或是對(duì)該目錄的說(shuō)明。

            message_file=
            此選項(xiàng),僅在dirmessage_enable選項(xiàng)激活方生效。默認(rèn)值為.message。

          5.6、日志設(shè)置

            xferlog_enable=YES|NO
            控制是否啟用一個(gè)日志文件,用于詳細(xì)記錄上傳和下載。該日志文件由xferlog_file選項(xiàng)指定。默認(rèn)值為NO,但簡(jiǎn)單配置文件中激活此選項(xiàng)。

            xferlog_file=
            這個(gè)選項(xiàng)設(shè)定記錄傳輸日志的文件名。默認(rèn)值為/var/log/vsftpd.log。

            xferlog_std_format=YES|NO
            控制日志文件是否使用xferlog的標(biāo)準(zhǔn)格式,如同wu-ftpd一樣。使用xferlog格式,可以重新使用已經(jīng)存在的傳輸統(tǒng)計(jì)生成器。然而,默認(rèn)的日志格式更為可讀性。默認(rèn)值為NO,但自帶的配置文件中激活了此選項(xiàng)。

            log_ftp_protocol=YES|NO
            當(dāng)此選項(xiàng)激活后,所有的FTP請(qǐng)求和響應(yīng)都被記錄到日志中。提供此選項(xiàng)時(shí),xferlog_std_format不能被激活。這個(gè)選項(xiàng)有助于調(diào)試。默認(rèn)值為NO。

          5.7、其他設(shè)置

            setproctitle_enable=YES|NO
            YES,VSFTPD將在系統(tǒng)進(jìn)程列表中顯示每個(gè)會(huì)話(session)的狀態(tài)。也就是說(shuō),進(jìn)程報(bào)告將顯示每個(gè)vsftpd會(huì)話在做什么(掛起、下載等),如用ps -ef|grep ftp。出于安全的目的,可以考慮將此選項(xiàng)關(guān)閉。NO,進(jìn)程報(bào)告只顯示一個(gè)vsftpd進(jìn)程在運(yùn)行。默認(rèn)值為NO。

            text_userdb_names=YES|No
            當(dāng)使用者登入后使用ls -al 之類(lèi)指令時(shí),目錄列表的用戶(hù)和組信息域,默認(rèn)是出現(xiàn)擁有者的UID,而不是該檔案擁有者的名稱(chēng)。若是希望出現(xiàn)擁有者的名稱(chēng),則將此功能開(kāi)啟。默認(rèn)值為NO。

            user_localtime=YES|NO
            默認(rèn)為NO。YES,VSFTPD顯示目錄列表時(shí)使用你本地時(shí)區(qū)的時(shí)間。默認(rèn)是顯示GMT時(shí)間。同樣,由ftp命令“MDTM”返回的時(shí)間值也受此選項(xiàng)影響。

            check_shell=YES|NO
            此選項(xiàng)僅對(duì)不使用PAM方式的VSFTPD生效。當(dāng)此選項(xiàng)關(guān)閉后,當(dāng)本地用戶(hù)登錄時(shí),VSFTPD不會(huì)檢查/etc/shells文件以尋找一個(gè)有效的用戶(hù)shell。默認(rèn)為YES。

            nopriv_user=
            指定一個(gè)用戶(hù),當(dāng)VSFTPD不想要什么權(quán)限時(shí),使用此用戶(hù)身份。這用戶(hù)最好是一個(gè)專(zhuān)用的用戶(hù),而不是用戶(hù)nobody。在大多數(shù)的機(jī)器上,nobody用戶(hù)被用于大量重要的事情。默認(rèn)值為nobody。

            pam_service_name=
            指明VSFTPD使用用PAM驗(yàn)證服務(wù)時(shí)的PAM配置文件名。默認(rèn)值為ftp。

          6、VSFTPD應(yīng)用

            本部分介紹VSFTPD的具體應(yīng)用方法。

          6.1、允許匿名用戶(hù)上傳文件

            在vsftpd.conf文件中修改或增加以下選項(xiàng):
            write_enable=YES
            anon_world_readable_only=NO
            anon_upload_enable=YES
            anon_mkdir_write_enable=YES

            然后創(chuàng)建供匿名用戶(hù)上傳文件的目錄,并設(shè)定權(quán)限:
            # mkdir /var/ftp/incoming
            # chmod o+w /var/ftp/incoming
            由于匿名用戶(hù)(ftp)上傳文件,需要對(duì)incoming目錄進(jìn)行操作,而incoming為root所有,匿名用戶(hù)(ftp)對(duì)于incoming來(lái)說(shuō)是其他用戶(hù),所以要加入其他用戶(hù)(o)的寫(xiě)權(quán)限。

          6.2、限制用戶(hù)在自家目錄

            在默認(rèn)配置中,本地用戶(hù)可以切換到自家目錄以外的目錄進(jìn)行瀏覽,并在權(quán)限范圍內(nèi)進(jìn)行上傳和下載,這無(wú)疑是個(gè)不安全因素。
            我們可以設(shè)置chroot,讓本地用戶(hù)登錄后只能訪問(wèn)自家目錄,無(wú)法訪問(wèn)其他目錄。相關(guān)的選項(xiàng)有三個(gè):chroot_local_user、chroot_list_enable、chroot_list_file。限制用戶(hù)在自家目錄有兩種做法:
            1、限制所有的本地用戶(hù)在自家目錄
            chroot_local_user=YES
            這種做法,可能會(huì)帶來(lái)一些安全性上的沖突。參見(jiàn)前面的chroot_local_user選項(xiàng)描述。
            2、限制部分本地用戶(hù)在自家目錄
            chroot_local_user=NO
            chroot_list_enable=YES
            chroot_list_file=/etc/vsftpd.chroot_list
            在/etc/vsftpd.chroot_list文件中加入要限制的本地用戶(hù)名。注意一個(gè)用戶(hù)名一行。

          6.3、配置高安全級(jí)別的匿名FTP服務(wù)器

            VSFTPD自帶的簡(jiǎn)單配置文件已經(jīng)自稱(chēng)是偏執(zhí)狂了,這里看看能否更加偏執(zhí)一些,:)。有些選項(xiàng)默認(rèn)已經(jīng)采用安全性的設(shè)置,這里就不再寫(xiě)出了。

            #只允許匿名訪問(wèn),不允許本地用戶(hù)訪問(wèn)
            anonymous_enable=YES
            local_enable=NO

            #使用ftpd_banner取代VSFTPD默認(rèn)的歡迎詞,免得泄漏相關(guān)信息
            ftpd_banner=Welcome to this FTP Server
            #只讓匿名用戶(hù)瀏覽可閱讀的文件,不可以瀏覽整個(gè)系統(tǒng)
            anon_world_readable_only=YES
            #隱藏文件的所有者和組信息,匿名用戶(hù)看到的文件的所有者和組全變?yōu)閒tp
            hide_ids=YES

            #取消寫(xiě)權(quán)限
            write_enable=NO
            anon_upload_enable=NO
            anon_mkdir_write_enable=NO
            anon_other_write_enable=NO

            #使用單獨(dú)模式,并指定監(jiān)聽(tīng)的IP地址
            listen_address=ip address
            #對(duì)連接進(jìn)行控制,還有超時(shí)時(shí)間,那就根據(jù)具體情況再說(shuō)了。
            connect_from_port_20=YES
            pasv_min_port=50000
            pasv_max_port=60000
            #控制并發(fā)數(shù),限定每個(gè)IP地址的并發(fā)數(shù),這個(gè)嘛,根據(jù)用戶(hù)自已定了。
            max_clients=numerical value
            max_per_ip=numerical value
            #限定下載速度,具體限多大,就由用戶(hù)自己定了,80KB/s,也很快了吧。
            anon_max_rate=80000

            #啟用詳細(xì)的日志記錄格式
            xferlog_enable=YES

          6.4、基于IP地址的虛擬FTP服務(wù)器

            假定服務(wù)器有兩個(gè)IP地址,192.168.0.1和192.168.0.2。VSFTPD是建立在192.168.0.1上的,現(xiàn)在我們?cè)?92.168.0.2上再提供一個(gè)虛擬FTP服務(wù)器。如何在一臺(tái)服務(wù)器上使用多個(gè)IP 地址,請(qǐng)參考相關(guān)文檔。

            1、創(chuàng)建虛擬FTP服務(wù)器的根目錄。
            mkdir -p /var/ftp2/pub
            確保/var/ftp2和/var/ftp2/pub目錄的擁有者和組均為root,掩碼為755。

            2、增加虛擬FTP服務(wù)器的匿名用戶(hù)帳號(hào)。原先的FTP服務(wù)器使用系統(tǒng)用戶(hù)ftp作為其匿名用戶(hù)帳號(hào)。我們要增加一個(gè)ftp2用于虛擬FTP服務(wù)器。
            useradd -d /var/ftp2 -M ftp2

            3、創(chuàng)建虛擬FTP服務(wù)器的配置文件。復(fù)制原來(lái)的vsftpd.conf作為虛擬FTP服務(wù)器的配置文件,并修改相關(guān)參數(shù)。
            cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf
            新添或修改以下參數(shù):
            listen=YES
            listen_address=192.168.0.2
            ftp_username=ftp2

            注:由于VSFTPD默認(rèn)是監(jiān)聽(tīng)所有的IP地址,當(dāng)我們?cè)O(shè)定基于IP的虛擬FTP服務(wù)器時(shí),為防止原來(lái)的FTP服務(wù)器與虛擬FTP服務(wù)器發(fā)生監(jiān)聽(tīng)上的沖突,原FTP服務(wù)器需要指定監(jiān)聽(tīng)的IP地址。在這里,原來(lái)的配置文件中就要設(shè)置listen_address=192.168.0.1。

            4、啟動(dòng)虛擬FTP服務(wù)器。

            /etc/rc.d/init.d/vsftpd腳本在啟動(dòng)時(shí),掃描/etc/vsftpd/目錄下所有的*.conf文件,按照*.conf文件的先后,依次啟用vsftpd進(jìn)程,每個(gè)vsftpd進(jìn)程對(duì)應(yīng)一個(gè).conf文件。即,“ls /etc/vsftpd/”列表的次序與“ps -aux |grep vsftpd”中的順序一樣。當(dāng)然了,“ps -aux | grep vsftpd”中也顯示出vsftpd所使用的配置文件,從中也可以看哪個(gè)vsftpd進(jìn)程對(duì)應(yīng)哪個(gè)FTP服務(wù)器。如果沒(méi)有列出配置文件,那就是默認(rèn)的vsftpd.conf,那么該進(jìn)程也就是原來(lái)的FTP服務(wù)器進(jìn)程。
            由于第3步中虛擬FTP服務(wù)器的配置文件被命名為vsftpd2.conf文件,所以我們可以用/etc/rc.d/init.d/vsftpd腳本同時(shí)啟動(dòng)或關(guān)閉原FTP服務(wù)器和新加的虛擬FTP服務(wù)器。
            以下命令單獨(dú)啟動(dòng)虛擬FTP服務(wù)器:
            /usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &
            單獨(dú)關(guān)閉虛擬FTP服務(wù)器,用“ps -aux | grep vsftpd”查出進(jìn)程號(hào),再用kill指令殺死虛擬FTP的進(jìn)程。

          6.5、虛擬用戶(hù)的配置

          6.5.1、VSFTPD的虛擬用戶(hù)介紹

            VSFTPD的本地用戶(hù)本身是系統(tǒng)的用戶(hù),除了可以登錄FTP服務(wù)器外,還可以登錄系統(tǒng)使用其他系統(tǒng)資源,而VSFTPD的虛擬用戶(hù)則是FTP服務(wù)的專(zhuān)用用戶(hù),虛擬用戶(hù)只能訪問(wèn)FTP服務(wù)器資源。對(duì)于只需要通過(guò)FTP對(duì)系統(tǒng)有讀寫(xiě)權(quán)限,而不需要其他系統(tǒng)資源的用戶(hù)或情況來(lái)說(shuō),采用虛擬用戶(hù)方式是很適合的。
            VSFTPD的虛擬用戶(hù)采用單獨(dú)的用戶(hù)名/口令保存方式,與系統(tǒng)賬號(hào)(passwd/shadow)分離,這大大增強(qiáng)了系統(tǒng)的安全性。VSFTPD可以采用數(shù)據(jù)庫(kù)文件來(lái)保存用戶(hù)/口令,如hash;也可以將用戶(hù)/口令保存在數(shù)據(jù)庫(kù)服務(wù)器中,如MySQL等。VSFTPD驗(yàn)證虛擬用戶(hù),則采用PAM方式。由于虛擬用戶(hù)的用戶(hù)名/口令被單獨(dú)保存,因此在驗(yàn)證時(shí),VSFTPD需要用一個(gè)系統(tǒng)用戶(hù)的身份來(lái)讀取數(shù)據(jù)庫(kù)文件或數(shù)據(jù)庫(kù)服務(wù)器以完成驗(yàn)證,這就是guest用戶(hù),這正如同匿名用戶(hù)也需要有一個(gè)系統(tǒng)用戶(hù)ftp一樣。當(dāng)然,guest用戶(hù)也可以被認(rèn)為是用于映射虛擬用戶(hù)。
            配置虛擬用戶(hù)分為幾部分:guest用戶(hù)的創(chuàng)建、用戶(hù)/口令的保存、PAM認(rèn)證配置、vsftpd.conf文件設(shè)置等。具體的配置方法,參考下面小節(jié)。注:在后面的例子中,假定存在虛擬用戶(hù)xiaotong和xiaowang。

          6.5.2 用戶(hù)創(chuàng)建和目錄設(shè)置

            在系統(tǒng)中添加vsftpdguest用戶(hù),作為虛擬用戶(hù)在系統(tǒng)中的代表。

            useradd vsftpdguest

            當(dāng)虛擬用戶(hù)登錄后,所在的位置為vsftpdguest的自家目錄/home/vsftpdguest。如果要讓虛擬用戶(hù)登錄到/var/ftp等其他目錄,修改vsftpdguest的自家目錄即可。

          6.5.3、配置文件的設(shè)置

          6.5.3.1、基本設(shè)置。

            在vsftpd.conf配置文件中,加入以下參數(shù):
            guest_enable=YES
            guest_username=vsftpdguest

          6.5.3.2、虛擬用戶(hù)的權(quán)限配置。

            VSFTPD-1.2.0添加了virtual_use_local_privs參數(shù),當(dāng)該參數(shù)激活(YES)時(shí),虛擬用戶(hù)使用與本地用戶(hù)相同的權(quán)限。當(dāng)此參數(shù)關(guān)閉(NO)時(shí),虛擬用戶(hù)使用與匿名用戶(hù)相同的權(quán)限,這也就是VSFTPD-1.2.0之前版本對(duì)虛擬用戶(hù)權(quán)限的處理方法。這兩者種做法相比,后者更加嚴(yán)格一些,特別是在有寫(xiě)訪問(wèn)的情形下。默認(rèn)情況下此參數(shù)是關(guān)閉的(NO)。
            下面先介紹virtual_use_local_privs=NO時(shí),即VSFTPD-1.2.0之前版本對(duì)虛擬用戶(hù)權(quán)限的配置方法:

            ①控制虛擬用戶(hù)瀏覽目錄
            如果讓用戶(hù)不能瀏覽目錄,但仍可以對(duì)文件操作,那么需要執(zhí)行以下二個(gè)步驟:一,配置文件中,anon_world_readable_only=YES。二,虛擬用戶(hù)目錄的權(quán)限改為只能由vsftpdguest操作:
            [root@hpe45 vsftpd]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
            [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest
            ②允許虛擬用戶(hù)上傳文件
            write_enable=YES
            anon_upload_enable=YES
            ③允許虛擬用戶(hù)修改文件名和刪除文件
            anon_other_write_enable=YES
            由于以上選項(xiàng)的設(shè)置同樣會(huì)對(duì)匿名用戶(hù)生效。如果不想匿名用戶(hù)趁機(jī)擁有同樣的權(quán)限,最好是禁止匿名用戶(hù)登錄。

            在VSFTPD-1.2.0中當(dāng)virtual_use_local_privs=YES時(shí),只需write_enable=YES,虛擬用戶(hù)就可以就擁有寫(xiě)權(quán)限。

          6.5.3.3、虛擬用戶(hù)的其他配置

            ①限定虛擬用戶(hù)在自家目錄。

            chroot_local_user=NO
            chroot_list_enable=YES
            chroot_list_file=/etc/vsftpd.chroot_list
            在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。
            或者,chroot_local_user=YES

            ②虛擬用戶(hù)的個(gè)人配置。

            如果想讓個(gè)別的虛擬用戶(hù)擁有自己特別的配置,同樣可以建立虛擬用戶(hù)的個(gè)人配置文件。在主配置文件中加入:
            user_config_dir=/etc/vsftpd/vsftpd_user_conf
            生成/etc/vsftpd/vsftpd_user_conf目錄,在該目錄下建立與特定虛擬用戶(hù)同名的文件:
            [root@hpe45 vsftpd]# mkdir vsftpd_user_conf
            [root@hpe45 vsftpd]# cd vsftpd_user_conf
            [root@hpe45 vsftpd_user_conf]# touch xiaowang
            然后在xiaowang文件中就可以加入專(zhuān)對(duì)xiaowang生效的選項(xiàng)設(shè)置了。
            注:如果在個(gè)人配置文件中加入chroot_local_user=YES是無(wú)效的。

          6.5.3.4、虛擬用戶(hù)個(gè)人目錄設(shè)置

            大家可以發(fā)現(xiàn),無(wú)論是哪個(gè)虛擬用戶(hù),登錄后所在的目錄都是/home/vsftpdguest,即都是guest_username用戶(hù)的自家目錄。下面,介紹如何為每個(gè)虛擬用戶(hù)建立自家目錄。
            一種作法是在虛擬用戶(hù)的個(gè)人配置文件中使用local_root選項(xiàng)指定虛擬用戶(hù)的自家目錄。以xiaowang為例,在第上步的基礎(chǔ)上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:
            local_root=/home/xiaowang
            新建xiaowang目錄,并將權(quán)限設(shè)為vsftpdguest:
            [root@hpe45 home]# mkdir xiaowang
            [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang

          6.5.4、MySQL保存虛擬用戶(hù)

            本節(jié)介紹如何將虛擬用戶(hù)的用戶(hù)名和口令保存在MySQL的數(shù)據(jù)庫(kù)中。這主要分二個(gè)部分,一是將用戶(hù)和口令保存在數(shù)據(jù)庫(kù),二是設(shè)置相應(yīng)的PAM認(rèn)證。為了方便論述,做如下假定:數(shù)據(jù)庫(kù)vsftpdvu,表users,字段name和passwd用于保存虛擬用戶(hù)的用戶(hù)名和口令;為了安全,只授權(quán)vsftpdguest讀vsftpdvu數(shù)據(jù)庫(kù)的users表。

            1、虛擬用戶(hù)的用戶(hù)名/口令的保存。這部分在MySQL數(shù)據(jù)庫(kù)中完成。首先,創(chuàng)建數(shù)據(jù)庫(kù)vsftpdvu以及表users,并插入虛擬用戶(hù)xiaotong、xiaowang。執(zhí)行以下命令:
            [root@hpe45 vsftpd]#mysql -p
            mysql>create database vsftpdvu;
            mysql>use vsftpdvu;
            mysql>create table users(name char(16) binary,passwd char(16) binary);
            mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
            mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
            mysql>quit

            然后,授權(quán)vsftpdguest只能讀vsftpdvu數(shù)據(jù)庫(kù)的users表。執(zhí)行以下命令:
            [root@hpe45 vsftpd]#mysql -u root mysql -p
            mysql>grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';
            mysql>quit

            如果要驗(yàn)證剛才的操作是否成功可以執(zhí)行下面命令:
            [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu
            mysql>select * from users;
            如果成功,將會(huì)列出xiaotong、xiaowang和加密后的密碼。

            2、設(shè)置PAM認(rèn)證。這里我們要用到一個(gè)利用mysql進(jìn)行pam驗(yàn)證的開(kāi)源項(xiàng)目(http://sourceforge.net/projects/pam-mysql/)。首先從網(wǎng)站下載它的程序包pam_myql-0.5.tar.gz,復(fù)制到/root目錄中。在編譯安裝之前,要確保mysql-devel的RPM包已經(jīng)安裝在你的機(jī)器上,如果沒(méi)有請(qǐng)從RHL安裝光盤(pán)中安裝該包。然后,執(zhí)行以下命令:
            [root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz
            [root@hpe45 root]#cd pam_mysql
            [root@hpe45 pam_mysql]#make
            [root@hpe45 pam_mysql]#make install
            make install這一步可能會(huì)出現(xiàn)錯(cuò)誤,那只好手動(dòng)將該目錄下生成的pam_mysql.o復(fù)制到/lib/security目錄下。
            接下來(lái),我們要設(shè)置vsftpd的PAM驗(yàn)證文件。打開(kāi)/etc/pam.d/vsftpd文件,加入以下內(nèi)容:
            auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
            account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
            上面涉及到的參數(shù),只要對(duì)應(yīng)前面數(shù)據(jù)庫(kù)的設(shè)置就可以明白它們的含義。這里需要說(shuō)明的是crypt參數(shù),crypt=0,口令以明文方式(不加密)保存在數(shù)據(jù)庫(kù)中;crypt=1,口令使用UNIX系統(tǒng)的DES加密方式加密后保存在數(shù)據(jù)庫(kù)中;crypt=2,口令經(jīng)過(guò)MySQL的password()函數(shù)加密后保存。

          ---------------------------------------------------------------------------------------------------------------------------------
          說(shuō)人之短,乃護(hù)己之短。夸己之長(zhǎng),乃忌人之長(zhǎng)。皆由存心不厚,識(shí)量太狹耳。能去此弊,可以進(jìn)德,可以遠(yuǎn)怨。
          http://www.aygfsteel.com/szhswl
          ------------------------------------------------------------------------------------------------------ ----------------- ---------
          posted on 2007-12-06 13:58 宋針還 閱讀(301) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 操作系統(tǒng)
          主站蜘蛛池模板: 上饶县| 大荔县| 方正县| 乐亭县| 高陵县| 宜兴市| 宽城| 克东县| 融水| 望都县| 松桃| 襄城县| 鄂托克旗| 泰安市| 铁岭县| 克拉玛依市| 兴业县| 白山市| 佛山市| 安平县| 绵竹市| 交城县| 抚州市| 林西县| 长岛县| 阜新| 古交市| 静安区| 隆安县| 汶川县| 刚察县| 黄骅市| 武乡县| 吉安市| 泸水县| 巨鹿县| 康乐县| 吉木乃县| 菏泽市| 太康县| 夏津县|