分类: BSD
2008-04-19 19:08:11
/usr/libexec/ftpd -D -l -l參數說明:
ee /etc/rc.local在裡面放一行:
/usr/libexec/ftpd -D -l -l例二:
ee /usr/local/etc/rc.d/ftpd.sh裡面放入下面的內容:
#!/bin/sh ftpd_flag="-l -l -S" ftpd="/usr/libexec/ftpd" case "$1" in start) [ -x ${ftpd} ] && ${ftpd} -D ${ftpd_flag} > /dev/null && echo -n ' ftpd ;; stop) /usr/bin/killall ftpd > /dev/null && echo -n ' ftpd' ;; *) echo "Usage: `basename $0` {start|stop}" >&2 ;; esac exit 0 |
chmod 554 /usr/local/etc/rc.d/ftpd.sh這樣,當 FreeBSD 開機時就會自動啟動 ftpd ,也可以利用 /usr/local/etc/rc.d/ftpd stop 來停止服務,執行時要加什麼參數就修改 ftpd_flag 那行。
ee /etc/inetd.conf先檢查一下 /etc/inetd.conf 中有沒有下面這行:
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l |
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l |
kill -HUP `cat /var/run/inetd.pid`讓 inetd 重新抓取 /etc/inetd.conf 設定檔就好了
killall ftpd如果之前是將 ftpd 放在 /etc/rc.local 中來由系統在開機時自動啟動,可以用下面的方法來停止自動提供 FTP 服務。
先打開 /etc/rc.local 來編輯,執行:1-2-2 inetd 模式當初是以 inetd 模式來提供服務的,則要修改 inetd 的設定檔 /etc/inetd.conf ,並讓 inetd 重新讀取設定。
ee /etc/rc.local將檔案中,執行 ftpd 那行的最前面加個井字號,儲存好即可。
先打開 /etc/inetd.conf 來編輯,執行:如果要確認 FTP 服是否已經停止了,可以執行:
ee /etc/inetd.conf將設定檔中,有 ftpd 那行的前面加上井字號後,儲存設定檔。
讓 inetd 重讀設定檔,執行下面指令:
kill -HUP `cat /var/run/inetd.pid`
netstat -na看看下面這行是不是已經消失了:
tcp4 0 0 *.21 *.* LISTEN
ee /etc/ftpchroot在檔案裡面放入我們要管制的人或群組:
gsyan foo @staff |
小老鼠開頭的表示後面接的名稱為群組。有方法可以只開放一個帳號不 chroot 其它全部 chroot 嗎?
ee /etc/ftpchroot假設 admin 是管理員的帳號,讓 admin 可以在系統中到處游走,就裡面放入下面三行:
admin / ftp . @ www |
開啟 /etc/login.conf 來修改,執行:
ee /etc/login.conf然後找到下面 default: 開頭的哪幾行,類似下面的內容:
default:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ ...................略 |
加下面這一行:
:ftp-chroot:\變成:
default:\ :ftp-chroot:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ ...................略 |
然後執行下列這行指令,把 login.conf 轉成資料庫格式
cap_mkdb /etc/login.conf這樣,所有的帳號都會做 chroot,活動的範圍就限定在自己的目錄中。
開啟 /etc/login.conf 新增系管的 login class 叫 admin,並加入 ftp-chroot 為否的設定:
ee /etc/login.conf新增下面幾行(注意藍色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我們在下面另外新增一個 login class 叫 admin:
default:\ :ftp-chroot:\ :copyright=/etc/COPYRIGHT:\ :welcome=/etc/motd:\ ...................略 admin:\ :ftp-chroot@:\ :tc=default: ...................略 |
然後執行下列這行指令,把 login.conf 轉成資料庫格式:將不同身份的使用者分為幾個 login class,並利用 /etc/login.conf 來設定各身份能夠使用的系統資源是滿不錯的管制工具,非常值得好好的研究,詳細的內容可以 man login.conf 。
cap_mkdb /etc/login.conf注意:上面在 admin 這個 class 中用的是:
:ftp-chroot@:\ftp-chroot 多了個小老鼠哦!它代表這個值要相反的意思,也就不做 ftp-chroot。
再來,我們要告訴系統,誰屬於 admin 這個 login class ,直接修改帳號資料庫,執行
vipw修改管理員 (不做 chroot) 的 login class 為 admin
例如:
假設系統管理員 gsyan 原來的帳號資料是:都修改完了就儲存檔案,利用 FTP 軟體以不同身份登入測試看看。
gsyan:*:1000:1000::0:0:大雄:/home/gsyan:/bin/tcsh要將它的 login class 修改為 admin ,就改為下面的樣子:
gsyan:*:1000:1000:admin:0:0:大雄:/home/gsyan:/bin/tcsh
說明:
FreeBSD 中 /etc/master.passwd 密碼欄位依序為:
帳號名稱:密碼:UID:GID:class:強制換密碼的時間:有效時間:資料:家目錄:shell
所以要改的 login class 是第五個欄位。
關於密碼檔的格式可以 man 5 passwd 查看
1.呼叫 /stand/sysinstall ,執行:
/stand/sysinstall2.當出現安裝點單『/stand/sysinstall Main Menu』, 按方向鍵移到『Configure』,然後按空白鍵
3.進入到『FreeBSD Configuration Menu』後,按方向鍵移到『Networking』,然後按空白鍵
4.進入到『Network Services Menu』後,按方向鍵移到『Anon FTP』,後按空白鍵
5.進入到『Anonymous FTP Configuration』後,輸入下面的資料:
6.輸入完畢後就按 OK 。
7.接著輸入FTP的 GID (使用預設值,直接按 Enter 鍵就可以)。
8.接著,詢問是否要產生進站歡迎詞 (welcome message),直接按 Enter 鍵就可以。
/stand/sysinstall 幫你做了什麼事?!9.輸入進站的歡迎詞:
10.編輯完好後按 Esc 鍵,再按 Enter 鍵兩次即可存檔離開。
11.接著都選點單最上面的 Exit 即可。
- 新增 FTP 用的帳號 (一般都叫 ftp)
- 新增 FTP 用的群組
- 新增 FTP 用的目錄
- 新增檔案到 ~ftp/etc/ (group,passwd,ftpmotd)
- 設定各目錄的權限:
目錄名稱 | 擁有者 | 權限 |
~ftp | root | a-w |
~ftp/etc | root | 555 (目錄權限) 444 (pwd.db group ftpmod 三個檔案) |
~ftp/pub | root | a-w |
一定要注意各目錄的權限,目錄只要有 Write 的權限,訪客就可以任意上載/修改/刪除檔案,如果 FTP 主機被有心人士發現可以任意上載檔案,呵~網路流量可能會直線爆增。相關檔案:
1.產生空的記錄檔 /var/log/ftpd ,執行下面的指令:2 FTP 的架設─pure-ftpd
touch /var/log/ftpd2. 修改 syslod 的設定檔
開啟 /etc/syslog.conf 來編輯:3.讓 syslogd 重新讀取 /etc/syslog.conf
ee /etc/syslog.conf找到含有 mail.info 的那一行
mail.info /var/log/maillog在前述那行的下面新增一行:
ftp.* /var/log/ftpd加完以後,按 Esc 鍵,再按兩次 Enter 鍵,將設定檔儲存好。
執行下面的指令通知 syslogd 重新讀取設定:
kill -HUP `cat /var/run/syslogd.pid`※ 注意:` 是按鍵盤上毛毛蟲那個按鍵哦!
pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/wu-ftpd.tgz方法二:用 ports
編譯 wu-ftpd 時需要用到 autoconf213 ,記得要先安裝好該工具,並確認 ports tree 中有 /usr/ports/devel/autoconf213 才不會出現錯誤。3-2 修改設定檔wu-ftpd 會用到的設定檔如下:
如果沒有可以執行下面指令安裝 autoconf213 及抓取 ports 相關檔案:
pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/autoconf213.tgz準備好後即可準備進行編譯及安裝:
cd /usr/ports/devel
ncftpget -R ftp://freebsd.csie.nctu.edu.tw/pub/ports/ports/devel/autoconf213
cd /usr/ports/ftp
ncftpget -R ftp://freebsd.csie.nctu.edu.tw/pub/ports/ports/ftp/wu-ftpd
cd /usr/ports/ftp/wu-ftpd
make
make install
cd /usr/local/etc只要稍加修改就可以用囉!
cp ftpaccess.sample ftpaccess
cp ftpconversions.sample ftpconversions
cp ftpusers.sample ftpusers
cp ftpgroups.sample ftpgroups
cp ftphosts.sample ftphosts
ftpaccess 中常用的設定:
功能 | 語法 |
定義類別(class) | class 類別名稱 成員(real,guest,anonyous) 連線網址 class TP real,guest,anonymous *.tp.edu.tw |
限制上線人數及時段 | limit class名稱 人數 時間 訊息檔(絕對路徑) limit TP 50 any /usr/local/etc/ftp.msg.Full 讓 TP 這個 class 同時最多 50 個連線,滿了就顯示 ftp.msg.Full中的內容 |
連線記錄 | log commands class名稱 log transfers class名稱 inbound,outbound |
控制可執行的指令 | delete yes 或 no 類別 overwrite yes 或 no 類別 rename yes 或 no 類別 chmod yes 或 no 類別 umask yes 或 no 類別 |
連線時只顯示主機名稱,不顯示版本... | greeting brief |
連線做 chroot | restricted-uid 使用者帳號 restricted-uid * (將所有使用者 chroot) |
不做 choot | unrestricted-uid 使用者帳號 unrestricted-uid gsyan (gsyan不做 chroot) |
開啟 /etc/inetd.conf 來修改:最後利用 netstat -na 來觀察服務是否啟動,或是以 FTP 軟體來測試。
ee /etc/inetd.conf將含有 ftp 開頭的那行改為下面的內容:
ftp stream tcp nowait root /usr/local/libexec/ftpd ftpd -a然後讓 inetd 重新讀取設定檔,執行下面的指令:
kill -HUP `cat /var/run/inetd.pid`