FTP=File Transfer Protocol(PFC959)
系統環境Linux 2.6.15-1.2054_FC5
隻安裝了開發工具,無圖形環境
建立ftp前的一些準備工作
# useradd nobody
# mkdir /usr/share/empty/
# mkdir /var/ftp/
# useradd -d /var/ftp ftp
# chown root.root /var/ftp
# chmod og-w /var/ftp
如果系統已經做好這些工作我們就可以直接進行以下工作
下載下傳
[url]http://vsftpd.beasts.org[/url]
安裝VSFTP
cd /usr/src
tar xvzf vsftpd-2.0.5.tar.gz
cd vsftpd-2.0.5
make
make install
安裝配置檔案
cp vsftpd.conf /etc/
cp RedHat/vsftpd.pam /etc/pam.d/
mv /etc/pam.d/vsftpd.pam /etc/pam.d/ftp
編輯配置檔案/etc/vsftpd.conf 在末尾處加入一句話:
listen=YES(使VSFTP采用單獨運作模式運作)
禁用xinetd方式啟動
chkconfig vsftpd off
chkconfig vsftpd --list 顯示 vsftpd off
添加到開機自啟動
vi /etc/rc.local添加一句話
/usr/local/sbin/vsftpd &
手動啟動服務
/usr/local/sbin/vsftpd & 或/etc/rc.local停止服務 killall -9 vsftpd
察看端口,如果有21端口處于監聽狀态,則ftp服務運作。
netstat -tln
配置匿名使用者通路及上傳
vi /etc/vsftpd.conf
anonymous_enable=YES #允許匿名使用者登入伺服器
local_enable=YES #允許本地使用者登入
write_enable=YES #允許用戶端寫指令
local_umask=022 #本地使用者新檔案的umask值(檔案對同組和其他使用者 來說是隻讀的)
anon_upload_enable=YES #允許匿名使用者上傳檔案
anon_mkdir_write_enable=YES #允許匿名使用者建立目錄
dirmessage_enable=YES #允許使用目錄資訊(将目錄下.message檔案列印給用 戶)
ftp_banner=welcome to ... #登入歡迎詞
listen=YES #運作在監聽模式
配置:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
dirmessage_enable=YES
重新開機服務
killall -9 vsftpd
上面兩句話可用killall -HUP vsftpd 代替
此時可以嘗試登陸FTP伺服器,
ftp localhost
匿名使用者anonymous/ftp可通路下載下傳。
由于匿名帳戶屬于ftp組,但是/var/ftp 屬于root組,且權限為755其他由戶不可寫
是以可以建立目錄,将檔案屬性改為FTP組
mkdir /var/ftp/incoming
chgrp ftp incoming/
此時匿名使用者可通路可以在incoming檔案夾内下載下傳上傳。
但是所有匿名使用者都可以看到下載下傳删除其他匿名使用者上傳得東西
是以可以把ftp組可讀權限去掉,這樣匿名使用者能上傳但是不能通路不能下載下傳。
chmod g-r incoming/
ls -ld incoming/
顯示drwx-wxr-x 2 root ftp 4096 Oct 21 18:13 incoming
普通使用者的目錄鎖定
匿名使用者預設配置被鎖定在:“/”目錄下即/var/ftp
普通使用者登入ftp時也可以鎖定
需要打開
chroot_list-enable=YES
在中chtoot_list_file=/etc/vsftpd.chroot_list
寫入普通使用者名
redhat
test
使用者控制
寫入/etc/ftpusers:的使用者将被拒絕通路ftp(但是可以通過修改/etc/pam.d/ftp中的sense值為allow來改成允許的使用者清單)
此方法并未成功,但是可以用下列方法實作本地使用者通路控制
在/etc/vsftpd.conf中添加
userlist_enalbe=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.user_list
vi /etc/vsftpd.user_list
這樣在vsftpd.user_list中的test帳戶不能通路ftp。如果是userlist_deny=NO
就變成隻有test可以通路ftp
強烈推薦使用man vsftpd.conf
察看更多詳細内容。