常用CentOSvsftpd安裝設定講解

maojunxu發表於2011-04-12

CentOS vsftpd還是比較常用的,於是我研究了一下CentOS vsftpd,在這裡拿出來和大家分享一下,希望對大家有用。這裡講解介紹centos vsftpd的設定。CentOS Linux與RHEL產品有著嚴格的版本對應關係,例如使用RHEL 4原始碼重新編譯釋出的是CentOS Linux 4.0,與RHEL 5對應的是CentOS Linux 5.0。

本地使用者經過設定後可以進行ftp訪問。而匿名使用者的訪問經過了轉換,在系統中。匿名使用者的使用者名稱為ftp, 系統將其屬性設定為 根目錄 /var/ftp/, 禁止控制檯登陸,也就是,該使用者只能進行ftp訪問。CentOS vsftpd 的執行程式為 /etc/vsftpd,修改 /etc/vsftpd/vsftpd.conf檔案中的listen要設定為YES.

CentOS vsftpd有兩種開機自啟動模式: inet模式和standalone模式,推薦使用standalone模式。
在CentOS中已整合了CentOS vsftpd軟體。CentOS vsftpd是一個安全高效的FTP服務軟體,得到了廣泛的應用。

本文介紹兩種常見安裝形式以及兩種安裝方式的配置
1.rpm包形式安裝
2.編譯安裝

1.rpm包形式安裝

一、CentOS vsftpd安裝

在服務中檢視是否已安裝VSFTPD服務。如沒有,下載並安裝:

rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm

二、設定CentOS vsftpd自啟動

chkconfig –level 35 vsftpd on

三、CentOS vsftpd配置

1 開啟 /etc/vsftpd/vsftpd.conf檔案。將anonymous_enable=YES,改為anonymous_enable=NO
2 開啟 /etc/vsftpd/vsftpd.conf檔案。新增user_config_dir=/etc/vsftpd/virtual,並建立virtual目錄。在此目錄中建立以使用者名稱為檔名的檔案,並寫入:local_root=[目錄],這個目錄即是FTP連線時的主目錄。
3 限定使用者只在自己目錄:修改vsftpd.conf檔案,取消註釋:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
在/etc/vsftpd/目錄下新增檔案chroot_list,加入作為FTP使用者的本地使用者名稱。
4 解決使用者無法進入目錄問題:
開啟終端,輸入:setsebool -P ftpd_disable_trans 1
然後重啟FTP服務:service vsftpd restart

四、許可權:

假設是/var/www/html
這個目錄的許可權應該是770,owner是root,group是ftp
chmod 770 /var/www/html
chown root:ftp /var/www/html

2.編譯安裝

vsftpd-2.0.1.tar.gz安裝筆記
1.安裝
tar xzvf vsftpd-2.0.1.tar.gz
cd vsftpd-2.0.1
make
make install

2.安裝配置檔案
#cp vsftpd.conf /etc/;
#cp RedHat/vsftpd.pam /etc/pam.d/ftp

3.編輯配置檔案/etc/vsftpd.conf
新增:listen=YES

4.啟動伺服器
#/usr/local/sbin/vsftpd &
mkdir /var/ftp
chmod og-w /var/ftp

5.若打算僅啟用/etc/ftpusers檔案中出現的使用者的話,則要修改/etc/pam.d/ftp中的deny為allow;否則,則出現在檔案中的使用者為禁止登入伺服器的使用者。

6 通過pam認證方式,新增虛擬使用者
(1)在/etc/pam.d/目錄中建立一個或者修改現有檔案ftp(若修改,則必順先註釋掉原來的可用項)
[root@VSFTP root]# touch /etc/pam.d/ftp
(2)在/etc/pam.d/ftp裡面加上如下的兩行
auth required (/lib/security/)pam_userdb.so db=/etc/vsftpd_login
account required (/lib/security/)pam_userdb.so db=/etc/vsftpd_login

注:括號內的路徑可以沒有。
(3)建立一系統的使用者名稱用密碼的檔案login.txt
[root@VSFTP root]# vi login.txt

在login.txt檔案中,輸入如下的內容。下面是我新增的FTP的虛擬使用者名稱和密碼,其中tom為使用者名稱,123是密碼;jerry為使用者名稱,123是密碼;其內容可以根據需要定製。
tom
123
jerry
123
(4)建立一個真實的使用者名稱vuser,其目錄可以根據需要來定,也可以按系統預設的來新增。
[root@VSFTP root]# useradd vuser
(5)改變其目錄/home/vuser的許可權,以使得其它使用者(如tom)登入時能檢視目錄下的檔案。
[root@VSFTP root]#chmod o+r /home/vuser
(6)通過db_load來建立虛擬使用者的庫檔案,此時要用到的原檔案是開始時建立的login.txt
[root@VSFTP root]# db_load -T -t hash -f login.txt /etc/vsftpd_login.db
(7)更改vsftpd.conf檔案,加入如下的幾行:
(pam_service_name=ftp)
guest_enable=YES
guest_username=vuser
(anon_world_readable_only=NO)

注:那些有關匿名的選項最好全部置為NO

(8)重啟vsFTPd伺服器:/usr/local/sbin/vsftpd &

7 把系統預設用standalone啟動改為用xinetd啟動
(1)在/etc/xinetd.d/目錄中建立一個檔案vsftpd
[root@VSFTP root]# touch /etc/xinetd.d/vsftpd
/etc/xinetd.d/vsftpd內容如下:
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID

# log_on_failure += USERID
nice = 10
disable = no
}
(2)複製vsftpd.conf到/etc/目錄下,因為xinetd對vsFTPd配製檔案應該在/etc目錄下,所以我們就必須把這個檔案複製到/etc目錄下,否則會出現系統中local使用者無法登入,也就是說,不復制這個檔案會出現ftp非匿名使用者無法訪問,只能用匿名使用者訪問。
[root@VSFTP root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
(3)更改配製檔案/etc/vsftpd.conf,把如下的項注掉:也就是把
listen=YES
改為
#listen=YES
或者是把這行刪除也行。
(4)把/etc/init.d/vsftpd這個檔案刪除。其實最好的備份到別處,因為我們有時實驗來實驗去,可能還會轉到standalone模式啟動。我就直接移動到別的目錄,比如是/root下面的backup目錄。

[root@VSFTP root]#mkdir /root/backup
[root@VSFTP root]# mv /etc/init.d/vsftpd /root/backup
(5)執行ntsysv,把vsftpd的服務取消
[root@VSFTP root]#ntsysv
[ ] vsftpd
(6)重啟xinetd服務
[root@VSFTP root]# service xinetd restart

備註:
1.將vsftpd新增為xinetd啟動的話可能存在啟動後不能連線,可能是因iptables引起的,關閉iptables試試看
2.vsftpd隨系統啟動方法:
2.1 通過rc.local啟動: vsftpd.conf 新增listen=YES,/etc/rc.d/rc.local 新增 /usr/local/sbin/vsftpd &
2.2 通過xinetd啟動:註釋掉vsftpd.conf的listen=YES, 新增以下檔案

/etc/xinetd.d/vsftpd內容如下:
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID

# log_on_failure += USERID
nice = 10
disable = no
}


相關文章