當你的 FreeBSD 安裝好後就內建 FTP ,只是預設不啟動它而已, 有人覺得 FreeBSD 內建的 ftpd 太陽春,會另外用別的 ftpd 來取代, 常見的替代方案有:PRoftpd , pureftp ......等,不過要隨時注意更新,因為 FTP 程式常常被找到有安全漏洞。 1 以 FreeBSD 內建的 ftpd 提供服務一般說來,當你安裝好 FreeBSD ,FTP 的服務程式 /usr/libexec/ftpd 就有了 1-1 打開 FTP 服務FreeBSD 系統的預設 ftpd 提供 daemon 模式(stand alone)和由 inetd 啟動 ftpd 兩種方式 1-1-1 方法一:daemon 模式 (stand alone)1-1-1-1 立即啟動 ftpd daemon如果只是要馬上啟動服務只要執行:
參數說明:
ftpd 還有很多的參數,可以 man ftpd 查看。 1-1-1-2 如何讓 FreeBSD 開機時自動啟動 ftpd如果只用前面的方法啟動 ftpd daemon,下次系統重新開機後就沒了,為了讓它能自動啟動,我們可以把啟動指令放入 /etc/rc.local 中或是仿 /usr/local/etc/rc.d 的檔案,自己寫個 ftpd.sh 。 例一:
在裡面放一行:
例二: 仿 /usr/local/etc/rc.d 中的檔案,新增一個叫 ftpd.sh 的 script :
裡面放入下面的內容:
存好檔後再更改一下檔案的權限,讓它可以執行:
這樣,當 FreeBSD 開機時就會自動啟動 ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop 來停止服務,執行時要加什麼參數就修改 ftpd_flag 那行。 1-1-2 方法二:由 inetd 來啟動 ftpd這種方式,想當然爾,就是要修改 /etc/inetd.conf 囉:
先檢查一下 /etc/inetd.conf 中有沒有下面這行: #ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l如果像上面那行一樣,開頭是井字號,表示現在 FTP 服務預設是被關閉的。井字號表示註解,不使用,只要把井字號去掉改成下面的樣子: ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l存檔後執行下面的指令:
讓 inetd 重新抓取 /etc/inetd.conf 設定檔就好了 注意:上面的 ` 是 Esc 鍵下面那鍋毛毛蟲的按鍵哦,可別打成單引號
1-2 停止 FTP 服務如果要停止 FTP 服務,看之前是以 daemon 模式啟動還是 inetd 模式啟動而有所不同。 1-2-1 daemon 模式daemon 模式可以執行下列指令來終止 ftpd 的程序:
如果之前是將 ftpd 放在 /etc/rc.local 中來由系統在開機時自動啟動,可以用下面的方法來停止自動提供 FTP 服務。
1-2-2 inetd 模式當初是以 inetd 模式來提供服務的,則要修改 inetd 的設定檔 /etc/inetd.conf ,並讓 inetd 重新讀取設定。
如果要確認 FTP 服是否已經停止了,可以執行:
看看下面這行是不是已經消失了:
1-3 限制使用者只能在自己目錄活動(chroot)如果沒有特殊設定,使用者用自己的帳號 FTP 到主機後,可以自由的切換任意目錄的,如果不想讓它亂跑則要做以下設定。 1-3-1 方法一:利用 /etc/ftpchrootFreeBSD 的 ftpd 以 /etc/ftpchroot 來控制哪些人或群組要如何 chroot ,所以我們開啟/新增這個設定檔來編輯。
在檔案裡面放入我們要管制的人或群組: gsyanfoo @staff 上面的設定使得 gsyan, foo 及屬於 staff 群組的人都只能在自己目錄活動。
有方法可以只開放一個帳號不 chroot 其它全部 chroot 嗎? 首先開啟 /etc/ftpchroot 來編輯:
假設 admin 是管理員的帳號,讓 admin 可以在系統中到處游走,就裡面放入下面三行: admin /ftp . @ www 儲存好就可以用 ftp 連線看看, 上面的設定有底下的效果:
第三行應用在 server 有 apache 提供使用者放網頁, 而 apache 設定 UserDir=www 時,以後只要告訴使用者: 『請將做好的網頁直接用自己的帳號 ftp 到主機即可』, 以前都要解釋半天,請他 ftp 後把網頁放到 www 資料夾, 不過,記得先將使用者的 www 目錄先建立好,不然可是會連登入都無法登入哦!! 在 FreeBSD 4.8R 以後的 /etc/ftpchroot 又新增了功能,詳細的設定可以 man ftpchroot (不過,之前的版本沒這鍋 man )。 1-3-2 方法二:利用 /etc/login.conf這個方法是利用使用者資料庫 (系統密碼檔 /etc/master.passwd) 中 login class 的欄位,來設定使用者隸於的 class ,然後在 /etc/login.conf 中設定各 class 在 FTP chroot 的動作為何,在 /etc/ftpchroot 不方便設定時,適用於要處理很多人的狀況。 default:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ ...................略 default:\ :ftp-chroot:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ ...................略
前面的方法,我們設定的是 default 這個 login class 要做 FTP 的 chroot,也就是所有人共同的設定,想讓系統管理可以到處游走,就設定一個系管的 class ,並且將 ftp-chroot 的屬性去掉即可達到部份開放的目的。
...................略
將不同身份的使用者分為幾個 login class,並利用 /etc/login.conf 來設定各身份能夠使用的系統資源是滿不錯的管制工具,非常值得好好的研究,詳細的內容可以 man login.conf 。 1-4 提供匿名(訪客用)的 FTP 服務讓在系統中沒有帳號訪客可以下載 FTP 站中的檔案,這種叫匿名的 FTP 服務 (Anonymous FTP),要提供這種服務必須有一個叫 ftp 的帳號並建立好相關的目錄及檔案,這部份如果不清楚,利用 /stand/sysinstall 來做是最輕鬆不過的。底下是設定的步驟:
|
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.