更全面的信息請參看這兩個文件。
FAQ: Setting up Anonymous FTP Services
Manual Page: ftpd
ftpd的三種啟動方式
OpenBSD的ftpd程序沒有配置文件,就靠設置運行參數(shù)進行配置。所有參數(shù)的
含義都可以在ftpd 的man文檔中獲得詳細信息:
# man ftpd
ftpd程序的啟動有三種方法:
·netd方式
'rc'方式
直接在命令行下執(zhí)行ftpd
1、inetd方式
在'etc/inetd.conf'文件中有這么一行:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -US
這里為'ftpd'傳遞了兩個參數(shù)'-US'。當然,你還可以組合自己想要的參數(shù)。
(一些常用參數(shù)的含義已在下文給出)。使用inetd方式,ftpd由inetd進程管
理,所以需要啟動inetd服務才能啟動ftpd。在OpenBSD的默認設置中,inetd被
配置為隨系統(tǒng)啟動。查看'/etc/rc.conf'中的'inetd'變量的值:
inetd=YES
2、'rc'方式
所謂'rc'方式,指的就是通過修改'/etc/rc.conf'或者'/etc/rc.conf.local'文件中變
量的值,為服務的啟動添加'entry',使服務能夠隨系統(tǒng)啟動。使用'rc'方式啟
動fttpd,只需要將'/etc/rc.conf'中的'ftpd_flags'變量設置為自己組合好的參數(shù)
即可。
ftpd_flags="-DUS"
3、直接在命令行執(zhí)行ftpd命令
這種方法的好處是不需要重新啟動系統(tǒng)就可以啟動ftpd服務:
# /usr/libexec/ftpd -4DllUS
停止ftpd
#pkill ftpd
如果需要現(xiàn)在就結(jié)束ftpd進程,則使用pkill ftpd的方式來實現(xiàn):
ftpd常用參數(shù)
以下是ftpd 常用的一些參數(shù)(這里列出的只是常用的,并不是全部。更多的參數(shù)請查看OpenBSD 的Manual Page)。
-4 如果指定了-D"參數(shù),則強制ftpd 只使用IPv4地址。
-6 和-4"的解釋類似;如果指定了-D"參數(shù),則強制ftpd只使用IPv6地址。
-A 只允許匿名登錄(除非指定了-n"選項)。
-D 如果指定了該參數(shù),ftpd 將做為daemon運行,監(jiān)聽ftpd 端口并且fork子進程對連接進行處理。在繁忙的服務器上,這樣可以減少系統(tǒng)負載,與使用inetd 方式啟動ftpd比起來,這種方式使用更少的系統(tǒng)資源。
-d 使用LOG FTP將Debug信息寫入syslog。
-l 每個成功和失敗的ftp session 都將由LOG FTP 工具通過syslog記錄下日志。如果這個選項被指定兩次(-ll),所有g(shù)et/put/append/delete/make、 directory/remove、dire操作以及所操作的文件都將被記錄進日志。
-U 每個并發(fā)的ftp session都被記錄到日志文件/var/run/utmp。
-n 禁止匿名登錄。默認是允許的。
-S 如果設置了這個參數(shù),ftpd 將會把所有匿名用戶的下載情況記錄在文件/var/log/ftpd 中(如果該文件存在的話)。
-T maxtimeout 連接超時的時間限制。默認是2小時。
-u mask 強制設置umask為指定的mask。而不是使用/etc/login.conf 中的設置(/etc/login.conf 中通常設置為022),并且不允許chmod。
常用參數(shù)組合
看了上面幾個常用選項的含義,你應該可以組合出合適的選項來滿足自己的功能需求了。
1、只允許使用系統(tǒng)賬號登錄FTP
因為匿名用戶登錄需要使用到系統(tǒng)中的一個名為"ftp"的帳戶(更多關(guān)于該帳戶的描述,請看本文下半部分),而OpenBSD系統(tǒng)中默認沒有該帳戶,需要手動建立并且設置正確的權(quán)限,所以如果只允許用戶通過系統(tǒng)賬號登錄FTP服務器,則只需要在/etc/rc.conf 中將ftpd °ags 的值簡單地設置為"-D"即可(雖然這時候的設置仍然允許匿名用戶登錄,但是因為系統(tǒng)中沒有"ftp"用戶,所以無法登錄)。當然你也可以多設置一些參數(shù)。比如:
ftpd_flags="-4DllUSn"
2、允許匿名用戶登錄訪問FTP資源
因為匿名用戶登錄到FTP服務器后,實際上是以ftp"用戶的身份進行所有操作,所以出于安全考慮,這個用戶的權(quán)限通常被設置得很低。比如:
不為該用戶提供一個可用的shell,使其無法登錄系統(tǒng);
沒有一個可用的密碼(即FAQ上說的"This account shouldn't have a usable password;");
登錄系統(tǒng)后被chroot;
......
為FTP目錄設置正確的權(quán)限
1、'ftp'目錄
"ftp"目錄表示"ftp"用戶的主目錄,在本例中就是"/var/ftp"目錄。將它的owner設置為"root",權(quán)限設置為任何人都不可寫(555):
# chown -R root:wheel /var/ftp
# chmod -R 555 /var/ftp
2、'ftp/bin'目錄
這個目錄并不是必須的。如果希望匿名用戶登錄到FTP后能夠執(zhí)行一些command,就可以將command 復制到這個目錄下。所有的command的權(quán)限都應該設置為只允許執(zhí)行(111)。
# mkdir /var/ftp/bin
# chown -R root:ftp /var/ftp/bin
# chmod -R 111 /var/ftp/bin/*
3、'ftp/etc'目錄
和"ftp/bin"目錄一樣,這也是個可選的,并不推薦創(chuàng)建它。(更多關(guān)于該目錄設置的信息請查看"ftpd" 的man文檔)。
4、'ftp/pub"目錄
這個目錄用來存放你希望被匿名用戶訪問的文件。權(quán)限應該設置為555。
# chown -R root:ftp /var/ftp/pub
# chmod -R 555 /var/ftp/pub
這里雖然提到了創(chuàng)建三個目錄,但是實際上我們只需要創(chuàng)建' ftp/pub'目錄并設置好權(quán)限就可以了。
chroot匿名登錄的用戶
'ftpd'會將'/etc/ftpchroot'文件中列出的用戶都chroot。要使'ftp'用戶在登錄ftp后被chroot,只需要簡單地把用戶名添加到這個文件中就可以了。這是一個示例文件:
# file: /etc/ftpchroot
# $OpenBSD: ftpchroot,v 1.3 1996/07/18 12:12:47 deraadt Exp $
##
list of users (one per line) given ftp access to a chrooted area.
# read by ftpd(8).
ftp
user1
'ftpd'在啟動時會讀取這個文件,如果'ftp'和'user1'這兩個用戶登錄ftp,將被分
別chroot到自己的$HOME目錄下。
其他一些相關(guān)文件
· /etc/ftpusers { 列出了所有不受歡迎的用戶。列在該文件中的用戶都無法
登錄ftp服務器。
· /etc/ftpwelcome { 歡迎信息。登錄的用戶都將在登錄時看到這一信息。
· /etc/motd { 如果'/etc/ftpwelcome'文件不存在,則使用'/etc/motd'文件的內(nèi)容做為歡迎信息。
2 .message { 這個文件可以被放置在' ftp'目錄下的任何一個子目錄中。用戶進入該目錄時就會顯示這個文件中的內(nèi)容。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。