當(dāng)你的 FreeBSD 安裝好後就內(nèi)建 FTP ,只是預(yù)設(shè)不啟動(dòng)它而已, 有人覺得 FreeBSD 內(nèi)建的 ftpd 太陽(yáng)春,會(huì)另外用別的 ftpd 來取代, 常見的替代方案有:PRoftpd , pureftp ......等,不過要隨時(shí)注意更新,因?yàn)?FTP 程式常常被找到有安全漏洞。
一般說來,當(dāng)你安裝好 FreeBSD ,F(xiàn)TP 的服務(wù)程式 /usr/libexec/ftpd 就有了
只要修改一下 /etc/inetd.conf , FTP 服務(wù)就已經(jīng)可以提供給有本機(jī)帳號(hào)的人使用
FreeBSD 系統(tǒng)的預(yù)設(shè) ftpd 提供 daemon 模式(stand alone)和由 inetd 啟動(dòng) ftpd 兩種方式
兩種方式比較起來,daemon 的方式適合對(duì)同一時(shí)間連線使用多,負(fù)載較大的主機(jī)
如果只是要馬上啟動(dòng)服務(wù)只要執(zhí)行:
/usr/libexec/ftpd -D -l -l
參數(shù)說明:
ftpd 還有很多的參數(shù),可以 man ftpd 查看。
如果只用前面的方法啟動(dòng) ftpd daemon,下次系統(tǒng)重新開機(jī)後就沒了,為了讓它能自動(dòng)啟動(dòng),我們可以把啟動(dòng)指令放入 /etc/rc.local 中或是仿 /usr/local/etc/rc.d 的檔案,自己寫個(gè) ftpd.sh 。
例一:
ee /etc/rc.local
在裡面放一行:
/usr/libexec/ftpd -D -l -l
例二:
仿 /usr/local/etc/rc.d 中的檔案,新增一個(gè)叫 ftpd.sh 的 script :
ee /usr/local/etc/rc.d/ftpd.sh
裡面放入下面的內(nèi)容:
|
存好檔後再更改一下檔案的權(quán)限,讓它可以執(zhí)行:
chmod 554 /usr/local/etc/rc.d/ftpd.sh
這樣,當(dāng) FreeBSD 開機(jī)時(shí)就會(huì)自動(dòng)啟動(dòng) ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop 來停止服務(wù),執(zhí)行時(shí)要加什麼參數(shù)就修改 ftpd_flag 那行。
這種方式,想當(dāng)然爾,就是要修改 /etc/inetd.conf 囉:
ee /etc/inetd.conf
先檢查一下 /etc/inetd.conf 中有沒有下面這行:
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l |
如果像上面那行一樣,開頭是井字號(hào),表示現(xiàn)在 FTP 服務(wù)預(yù)設(shè)是被關(guān)閉的。井字號(hào)表示註解,不使用,只要把井字號(hào)去掉改成下面的樣子:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l |
存檔後執(zhí)行下面的指令:
kill -HUP `cat /var/run/inetd.pid`
讓 inetd 重新抓取 /etc/inetd.conf 設(shè)定檔就好了
注意:上面的 ` 是 Esc 鍵下面那鍋毛毛蟲的按鍵哦,可別打成單引號(hào)
如果要停止 FTP 服務(wù),看之前是以 daemon 模式啟動(dòng)還是 inetd 模式啟動(dòng)而有所不同。
daemon 模式可以執(zhí)行下列指令來終止 ftpd 的程序:
killall ftpd
如果之前是將 ftpd 放在 /etc/rc.local 中來由系統(tǒng)在開機(jī)時(shí)自動(dòng)啟動(dòng),可以用下面的方法來停止自動(dòng)提供 FTP 服務(wù)。
先打開 /etc/rc.local 來編輯,執(zhí)行:
ee /etc/rc.local
將檔案中,執(zhí)行 ftpd 那行的最前面加個(gè)井字號(hào),儲(chǔ)存好即可。
當(dāng)初是以 inetd 模式來提供服務(wù)的,則要修改 inetd 的設(shè)定檔 /etc/inetd.conf ,並讓 inetd 重新讀取設(shè)定。
先打開 /etc/inetd.conf 來編輯,執(zhí)行:
ee /etc/inetd.conf
將設(shè)定檔中,有 ftpd 那行的前面加上井字號(hào)後,儲(chǔ)存設(shè)定檔。
讓 inetd 重讀設(shè)定檔,執(zhí)行下面指令:
kill -HUP `cat /var/run/inetd.pid`
如果要確認(rèn) FTP 服是否已經(jīng)停止了,可以執(zhí)行:
netstat -na
看看下面這行是不是已經(jīng)消失了:
tcp4 0 0 *.21 *.* LISTEN
如果沒有特殊設(shè)定,使用者用自己的帳號(hào) FTP 到主機(jī)後,可以自由的切換任意目錄的,如果不想讓它亂跑則要做以下設(shè)定。
FreeBSD 的 ftpd 以 /etc/ftpchroot 來控制哪些人或群組要如何 chroot ,所以我們開啟/新增這個(gè)設(shè)定檔來編輯。
ee /etc/ftpchroot
在檔案裡面放入我們要管制的人或群組:
gsyan foo @staff |
上面的設(shè)定使得 gsyan, foo 及屬於 staff 群組的人都只能在自己目錄活動(dòng)。
說明:
小老鼠開頭的表示後面接的名稱為群組。
有方法可以只開放一個(gè)帳號(hào)不 chroot 其它全部 chroot 嗎?
最近 FreeBSD 內(nèi)建的 ftpd 在 /etc/ftpchroot 又多了可設(shè)定的東東, 如果 man ftpchroot 可以看到說明,就表示可以使用下面的的設(shè)定來達(dá)到只開放部份帳號(hào)不鎖定在個(gè)人目錄的目的。
首先開啟 /etc/ftpchroot 來編輯:
ee /etc/ftpchroot
假設(shè) admin 是管理員的帳號(hào),讓 admin 可以在系統(tǒng)中到處游走,就裡面放入下面三行:
admin / ftp . @ www |
儲(chǔ)存好就可以用 ftp 連線看看, 上面的設(shè)定有底下的效果:
第三行應(yīng)用在 server 有 apache 提供使用者放網(wǎng)頁(yè), 而 apache 設(shè)定 UserDir=www 時(shí),以後只要告訴使用者: 『請(qǐng)將做好的網(wǎng)頁(yè)直接用自己的帳號(hào) ftp 到主機(jī)即可』, 以前都要解釋半天,請(qǐng)他 ftp 後把網(wǎng)頁(yè)放到 www 資料夾, 不過,記得先將使用者的 www 目錄先建立好,不然可是會(huì)連登入都無法登入哦!!
在 FreeBSD 4.8R 以後的 /etc/ftpchroot 又新增了功能,詳細(xì)的設(shè)定可以 man ftpchroot (不過,之前的版本沒這鍋 man )。
這個(gè)方法是利用使用者資料庫(kù) (系統(tǒng)密碼檔 /etc/master.passwd) 中 login class 的欄位,來設(shè)定使用者隸於的 class ,然後在 /etc/login.conf 中設(shè)定各 class 在 FTP chroot 的動(dòng)作為何,在 /etc/ftpchroot 不方便設(shè)定時(shí),適用於要處理很多人的狀況。
開啟 /etc/login.conf 來修改,執(zhí)行:
ee /etc/login.conf
然後找到下面 default: 開頭的哪幾行,類似下面的內(nèi)容:
default:/ :copyright=/etc/COPYRIGHT:/ :welcome=/etc/motd:/ ...................略 |
加下面這一行:
:ftp-chroot:/
變成:
default:/ :ftp-chroot:/ :copyright=/etc/COPYRIGHT:/ :welcome=/etc/motd:/ ...................略 |
然後執(zhí)行下列這行指令,把 login.conf 轉(zhuǎn)成資料庫(kù)格式
cap_mkdb /etc/login.conf
這樣,所有的帳號(hào)都會(huì)做 chroot,活動(dòng)的範(fàn)圍就限定在自己的目錄中。
想全部管制,但又想開放系統(tǒng)管理用的帳號(hào)不做 chroot 呢?
前面的方法,我們?cè)O(shè)定的是 default 這個(gè) login class 要做 FTP 的 chroot,也就是所有人共同的設(shè)定,想讓系統(tǒng)管理可以到處游走,就設(shè)定一個(gè)系管的 class ,並且將 ftp-chroot 的屬性去掉即可達(dá)到部份開放的目的。
開啟 /etc/login.conf 新增系管的 login class 叫 admin,並加入 ftp-chroot 為否的設(shè)定:
ee /etc/login.conf
新增下面幾行(注意藍(lán)色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我們?cè)谙旅媪硗庑略鲆粋€(gè) login class 叫 admin:
...................略 |
然後執(zhí)行下列這行指令,把 login.conf 轉(zhuǎn)成資料庫(kù)格式:
cap_mkdb /etc/login.conf
注意:上面在 admin 這個(gè) class 中用的是:
:ftp-chroot@:/
ftp-chroot 多了個(gè)小老鼠哦!它代表這個(gè)值要相反的意思,也就不做 ftp-chroot。
再來,我們要告訴系統(tǒng),誰(shuí)屬於 admin 這個(gè) login class ,直接修改帳號(hào)資料庫(kù),執(zhí)行
vipw
修改管理員 (不做 chroot) 的 login class 為 admin
例如:
假設(shè)系統(tǒng)管理員 gsyan 原來的帳號(hào)資料是:
gsyan:*:1000:1000::0:0:大雄:/home/gsyan:/bin/tcsh
要將它的 login class 修改為 admin ,就改為下面的樣子:
gsyan:*:1000:1000:admin:0:0:大雄:/home/gsyan:/bin/tcsh
都修改完了就儲(chǔ)存檔案,利用 FTP 軟體以不同身份登入測(cè)試看看。
說明:
FreeBSD 中 /etc/master.passwd 密碼欄位依序?yàn)椋?/P>
帳號(hào)名稱:密碼:UID:GID:class:強(qiáng)制換密碼的時(shí)間:有效時(shí)間:資料:家目錄:shell
所以要改的 login class 是第五個(gè)欄位。
關(guān)於密碼檔的格式可以 man 5 passwd 查看
將不同身份的使用者分為幾個(gè) login class,並利用 /etc/login.conf 來設(shè)定各身份能夠使用的系統(tǒng)資源是滿不錯(cuò)的管制工具,非常值得好好的研究,詳細(xì)的內(nèi)容可以 man login.conf 。
讓在系統(tǒng)中沒有帳號(hào)訪客可以下載 FTP 站中的檔案,這種叫匿名的 FTP 服務(wù) (Anonymous FTP),要提供這種服務(wù)必須有一個(gè)叫 ftp 的帳號(hào)並建立好相關(guān)的目錄及檔案,這部份如果不清楚,利用 /stand/sysinstall 來做是最輕鬆不過的。底下是設(shè)定的步驟:
1.呼叫 /stand/sysinstall ,執(zhí)行:
/stand/sysinstall
2.當(dāng)出現(xiàn)安裝點(diǎn)單『/stand/sysinstall Main Menu』, 按方向鍵移到『Configure』,然後按空白鍵
![]()
3.進(jìn)入到『FreeBSD Configuration Menu』後,按方向鍵移到『Networking』,然後按空白鍵
![]()
4.進(jìn)入到『Network Services Menu』後,按方向鍵移到『Anon FTP』,後按空白鍵
![]()
5.進(jìn)入到『Anonymous FTP Configuration』後,輸入下面的資料:
![]()
6.輸入完畢後就按 OK 。
7.接著輸入FTP的 GID (使用預(yù)設(shè)值,直接按 Enter 鍵就可以)。
![]()
8.接著,詢問是否要產(chǎn)生進(jìn)站歡迎詞 (welcome message),直接按 Enter 鍵就可以。
9.輸入進(jìn)站的歡迎詞:
10.編輯完好後按 Esc 鍵,再按 Enter 鍵兩次即可存檔離開。
11.接著都選點(diǎn)單最上面的 Exit 即可。
新聞熱點(diǎn)
疑難解答
圖片精選