FREEBSD6.0 架設(shè)FTP 服務(wù)器

FTP (File Transfer Protocol) 是常用的網(wǎng)絡(luò)協(xié)議,主要的功能是用來傳輸檔案,我們時(shí)常從 FTP 站臺(tái)下載檔案。本章將介紹如何使用 FreeBSD 架設(shè) FTP 服務(wù)器,并說明各種 FTP 服務(wù)器的管理技巧。本章除了 FreeBSD 內(nèi)附的 FTP 服務(wù)器軟件外,并將介紹筆者開發(fā)的 SmbFTPD。讀完本章后,您將進(jìn)一步了解下列主題:
- FTP 協(xié)定的運(yùn)作方法。
- 如何使用 FreeBSD FTP。
- 加強(qiáng)權(quán)限控制以建立安全的 FTP 服務(wù)器。
- 安裝設(shè)定 SmbFTPD。
- 如何使用具 SSL 加密的 FTP。
- 如何進(jìn)行流量控制。
15.1 FTP 概論
FTP 是一個(gè)歷史悠久的網(wǎng)絡(luò)通訊協(xié)議,和大多數(shù)的網(wǎng)絡(luò)協(xié)議一樣,它采用 Client/Server 架構(gòu),各地的使用者可以經(jīng)由網(wǎng)絡(luò)連到服務(wù)器上傳或下載檔案。FTP 協(xié)議比較特別的地方在于它在使用時(shí)必須建立二個(gè)聯(lián)機(jī):一個(gè)用來傳輸指令、一個(gè)用來傳輸檔案。
圖 15-1
當(dāng)我們使用 FTP 軟件連到 FTP 服務(wù)器時(shí),客戶端會(huì)先連到服務(wù)器的連接埠 21,并建立一條「控制聯(lián)機(jī)」(Control Stream)。接下來,您會(huì)輸入賬號(hào)、密碼等指令,這些指令及 FTP 的響應(yīng)都是使用都是使用「控制聯(lián)機(jī)」。當(dāng)您要下載檔案時(shí),或者是執(zhí)行 ls 以列出目錄中的檔案時(shí),檔案或目錄列表的下載是經(jīng)另一個(gè)聯(lián)機(jī)「數(shù)據(jù)聯(lián)機(jī)」(Data Stream)?!笖?shù)據(jù)聯(lián)機(jī)」和「控制聯(lián)機(jī)」不同的是數(shù)據(jù)聯(lián)機(jī)所傳輸?shù)臄?shù)據(jù)比較大,而控制聯(lián)機(jī)只是用來傳輸指令及簡單的響應(yīng)。
基本上,一個(gè)完整的 FTP 聯(lián)機(jī)建立過程為:
- 客戶端打開自已機(jī)器大于 1024 的連接埠,并連到服務(wù)器的連接埠 21,建立「控制聯(lián)機(jī)」。
- 客戶端開始對(duì)服務(wù)器下指令,告訴服務(wù)器客戶端用來傳輸檔案的連接埠為何。
- 服務(wù)器從連接埠 20 連到客戶端所開放的埠號(hào) (大于 1024),以建立「數(shù)據(jù)聯(lián)機(jī)」。
上述這種聯(lián)機(jī)建立的方式是由服務(wù)器主動(dòng)建立「數(shù)據(jù)聯(lián)機(jī)」,我們稱之為「主動(dòng)模式」(Active Mode)?;旧现鲃?dòng)模式的運(yùn)作在沒有防火墻或 NAT 的情形下沒有什么問題,但若客戶端有防火墻,則可能會(huì)無法建立聯(lián)機(jī)。
圖 15-2
因?yàn)椤缚刂坡?lián)機(jī)」是由客戶端主動(dòng)連到服務(wù)器,所以在客戶端有防火墻或 NAT 時(shí),還是可以連到服務(wù)器。接下來在建立「數(shù)據(jù)聯(lián)機(jī)」時(shí),客戶端會(huì)從「控制聯(lián)機(jī)」中告訴服務(wù)器它的 IP 及埠號(hào),請(qǐng)服務(wù)器連過來。但是由于客戶端有防火墻,所以服務(wù)器要連到客戶端時(shí)會(huì)失敗,而無法建立聯(lián)機(jī)。
基本上,如果客戶端使用的是 FreeBSD 的 NAT 不會(huì)有這種問題,F(xiàn)reeBSD 會(huì)自動(dòng)做轉(zhuǎn)換,但若是使用其它的防火墻就不一定可以支持 FTP 的 Active Mode。
何謂 Passive Mode
要解決 FTP Active Mode 的問題,可以在聯(lián)機(jī)時(shí)改用「被動(dòng)模式」(Passive Mode)。所謂的被動(dòng)模式就是由服務(wù)器打開一個(gè)連接埠,被動(dòng)地等客戶端連過來建立「數(shù)據(jù)聯(lián)機(jī)」。被動(dòng)模式的聯(lián)機(jī)建立過程為:
- 客戶端打開自已機(jī)器大于 1024 的連接埠,并連到服務(wù)器的連接埠 21,建立「控制聯(lián)機(jī)」。
- 客戶端開始對(duì)服務(wù)器下指令,告訴服務(wù)器進(jìn)入「被動(dòng)模式」。
- 服務(wù)器打開一個(gè)大于 1024 的連接埠,等待客戶端的聯(lián)機(jī)。
- 客伺端打開自已機(jī)器大于 1024 的連接埠,并連到服務(wù)器以建立「數(shù)據(jù)聯(lián)機(jī)」。
圖 15-3
由于控制聯(lián)機(jī)及數(shù)據(jù)聯(lián)機(jī)都是由客戶端主動(dòng)連過去服務(wù)器,如此即可避開防火墻及 NAT 的問題。我們來看看如何判斷聯(lián)機(jī)失敗是否因?yàn)橹鲃?dòng)模式的原因:
# ftp ftp.freebsd.org Trying 204.152.184.73... Connected to ftp.freebsd.org (204.152.184.73). 220 Welcome to freebsd.isc.org. Name (ftp.freebsd.org:alex): anonymous 331 Please specify the password. Password: 230- 230-You have reached the freebsd.isc.org FTP server, serving the 230-full FreeBSD FTP archive over IPv4 (204.152.184.73) and IPv6 230-(2001:4f8:0:2::e) networks. This server is also known as: 230- 230- ftp.freebsd.org 230- ftp4.freebsd.org 230- ftp4.us.freebsd.org 230- 230-This server is operated by Internet Systems Consortium (ISC), 230-on behalf of the FreeBSD Project, with hardware donations from 230-Apple, Intel and Iron Systems. 230- 230-Questions about this service can be sent to: freebsd@isc.org. 230- 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls ^C ftp> passive Passive mode on ftp> ls 227 Entering Passive Mode (204,152,184,73,54,200) 150 Here comes the directory listing. drwxrwxr-x 3 0 0 512 Apr 17 2003 pub 226 Directory send OK. ftp>
當(dāng)您登入一臺(tái) FTP 服務(wù)器后,如果您輸入 ls,卻等了很久都沒有響應(yīng),您可以輸入 <Ctrl>+C 以中斷命令。接著輸入 passive 以進(jìn)入被動(dòng)模式,再打 ls 就可以看到目錄內(nèi)容,則無法聯(lián)機(jī)的問題一定是主動(dòng)模式的原故。
15.2 設(shè)定 FTP 服務(wù)器
FreeBSD 內(nèi)建有 FTP 服務(wù)器的功能,如果您要使用內(nèi)建的 ftpd,我們不需要特別進(jìn)行任何安裝的動(dòng)作,只要做好設(shè)定即可。本小節(jié)中,我們將介紹如何設(shè)定啟動(dòng) FTP 服務(wù)器的功能,并進(jìn)行一些基本的配置。
15.2.1 啟動(dòng) FTP 服務(wù)器
我們有二種方式啟動(dòng) ftpd,一種是使用 standalone daemon,另一種是使用 inetd。inetd 是 UNIX 系統(tǒng)中一個(gè)強(qiáng)大的「超級(jí)服務(wù)器」,我們可以使用它來管理許多系統(tǒng)服務(wù),例如 telnet、ssh、ftp 等。大部份的系統(tǒng)服務(wù)都是使用 inetd 來啟動(dòng),使用它的好處在于可以統(tǒng)一管理各種服務(wù),并經(jīng)由它來設(shè)定服務(wù)規(guī)則,例如是否要阻擋某些 IP 來源等。不過,使用 inetd 的方式缺點(diǎn)是每次有聯(lián)機(jī)要求時(shí),inetd 的 daemon 必須依聯(lián)機(jī)的種類去執(zhí)行相對(duì)映的指令,所以速度比較慢。
另一種啟動(dòng) FTP 的方式是使用 standalone daemon,也就是直接執(zhí)行 FTP daemon,當(dāng)它接收到新的聯(lián)機(jī)時(shí),就 fork() 出來處理,這種方式聯(lián)機(jī)建立的速度較快,比較適合專門的 FTP 服務(wù)器。
使用 inetd
我們先來介紹如何使用 inetd 的方式啟動(dòng) FTP 服務(wù)器。首先,請(qǐng)編輯 /etc/inetd.conf,將 ftp 設(shè)定開頭的 # 移除:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l |
接下來,我們必須使用下列指令重跑 inetd:
# kill -1 `cat /var/run/inetd.pid`
現(xiàn)在您就可以開始使用 FreeBSD 的 FTP 服務(wù)了。
使用獨(dú)立 Daemon
如果您要以獨(dú)立的 daemon 方式啟動(dòng) FTP,請(qǐng)先確定在 inetd.conf 中沒有啟動(dòng) FTP 服務(wù)。接下來,請(qǐng)?jiān)谛略鲆粋€(gè)檔案 /usr/local/etc/rc.d/ftpd.sh 內(nèi)容如下:
#!/bin/sh ftpd_program="/usr/libexec/ftpd" ftpd_flags="-D -l" case $1 in start) echo "Starting FTPD" $ftpd_program $ftpd_flags ;; stop) echo "Stopping FTPD" killall ftpd ;; restart) $0 stop sleep 1 $0 start ;; esac |
編輯完后,我們必須將該檔案變成可執(zhí)行:
# chmod 755 /usr/local/etc/rc.d/ftpd.sh
接下來,您就可以使用下列指令啟動(dòng) FTPD 了:
# /usr/local/etc/rc.d/ftpd.sh tart
如果您要停止 FTPD 服務(wù),則使用下列指令:
# /usr/local/etc/rc.d/ftpd.sh stop
15.2.2 編輯歡迎訊息
當(dāng)我們聯(lián)機(jī)到一個(gè) FTP 站臺(tái)時(shí),我們可以看到二個(gè)歡迎訊息,一個(gè)是登入前的訊息,另一個(gè)是登入后的訊息。以下列訊息為例:
# ftp localhost Trying ::1... Connected to localhost.alexwang.com. 220- Welcome to My FTP Server. 220- 220- This is a welcome message 220- 220- Nice to see you. 220 vmware.alexwang.com FTP server (Version 6.00LS) ready. Name (localhost:alex): 331 Password required for alex. Password: 230- This is the message of the day. 230- 230- It will be shown after user login. 230 User alex logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp>
開頭為 220- 的就是登入前的訊息,我們稱它為歡迎訊息。以 230- 為開頭的是登入后的訊息,我們稱它為本日訊息 (Message of the day)。這二種訊息我們都可以自行設(shè)定。
如果您要設(shè)定的是登入前的訊息,請(qǐng)新增一個(gè)檔案 /etc/ftpwelcome,并將您的訊息寫入該文件中。以下為上述范例中的訊息內(nèi)容:
Welcome to My FTP Server. This is a welcome message Nice to see you. |
您不需要寫 220- 等數(shù)據(jù),F(xiàn)TP 服務(wù)器會(huì)自動(dòng)幫您加上這種代碼。而登入后的訊息是存放在 /etc/ftpmotd,您可以編輯該檔以進(jìn)行設(shè)定。
15.2.3 FTP 服務(wù)器管理
在啟動(dòng) FTP 服務(wù)器時(shí),我們可以加入一些參數(shù)以調(diào)整服務(wù)器的行為。例如,修改預(yù)設(shè)的連接端口、記錄使用者上傳、下載的檔案等等。有些參數(shù)必須要在使用獨(dú)立的 daemon 方式啟動(dòng)時(shí)才有用,而有的參數(shù)在 inetd 模式下也可以使用。
下表為我們常用的參數(shù):
參數(shù) | 是否只能在 Daemon 模式下使用 | 意義 |
-a | 是 | 當(dāng)您有二張網(wǎng)絡(luò)卡或是二個(gè) IP 時(shí),我們可以設(shè)定只接受聯(lián)機(jī)到某一個(gè) IP 的聯(lián)機(jī)要求。例如:
ftpd -D -a 192.168.0.1 此范例表示只接受使用者聯(lián)機(jī)到 192.168.0.1 這個(gè) IP。 |
-d | 否 | 記錄 FTP 的除錯(cuò)訊息。除了加入這個(gè)參數(shù)外,您必須修改 /etc/syslog.conf,并加入下列內(nèi)容以記錄 FTP 的訊息。
!ftpd *.* /var/log/ftpd.log |
-h | 否 | 不要顯示 FTP 服務(wù)器的主機(jī)名稱、軟件信息、版本等。 |
-l | 否 | 記錄 FTP 登入成功及失敗的訊息。如果您使用二次 -l,則使用者上傳、下載、刪除、建立目錄時(shí)都會(huì)留下記錄。預(yù)設(shè)的記錄會(huì)留在 /var/log/xferlog 中。 |
-P | 是 | 我們知道 FTP 預(yù)設(shè)會(huì)****連接埠 21,以接受客戶端的聯(lián)機(jī)要求。不過如果您是以獨(dú)立的 daemon 方式啟動(dòng) FTP,則 可以使用 -P 加上連接埠號(hào)以改變預(yù)設(shè)連接埠。 |
另外,還有很多用來控制使用者權(quán)限的參數(shù),我們會(huì)在下一小節(jié)中說明。您也可以使用 man ftpd 以查看更多關(guān)于 ftpd 的參數(shù)。
如果您要修改 ftpd 啟動(dòng)的參數(shù),在 inetd 模式下,您可以修改 /etc/inetd.conf,并在 ftp 設(shè)定的最后面加入?yún)?shù),如下列粗體字所示:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -l -d ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l -l -d |
上面的范例中,我們多加入了參數(shù) -l -d,以記錄更多 ftpd 的訊息。
如果您是以獨(dú)立的 Daemon 方式啟動(dòng) ftpd,則請(qǐng)修改 /usr/local/etc/rc.d/ftpd.sh:
#!/bin/sh ftpd_program="/usr/libexec/ftpd" ftpd_flags="-D -l -l -d" ... |
我們只要修改 ftpd_flags 的部份,加入您所要的參數(shù)即可。
15.3 FTP 權(quán)限控制
預(yù)設(shè)的 FTP 啟動(dòng)后,使用者可以上傳、下載任何他們有權(quán)存取的檔案。在登入后,使用者可以進(jìn)到任何系統(tǒng)中的目錄 (如果目錄權(quán)限允許的話)。本小節(jié)將告訴您一些 FTP 讀寫權(quán)限的控制,讓您可以更進(jìn)一步控制服務(wù)器的系統(tǒng)安全。
15.3.1 限制賬號(hào)與聯(lián)機(jī)來源
我們可以設(shè)定限制某些賬號(hào)不可以使用 FTP 登入。使用者在登入 FTP 服務(wù)器時(shí),有幾個(gè)規(guī)則會(huì)拒絕該賬號(hào)登入:
- 如果 /var/run/nologin 存在,則所有賬號(hào)都不可以登入。這個(gè)檔案可以用來暫時(shí)停止 FTP 服務(wù)。
- 使用者一定要有密碼才能登入,沒有密碼的使用者無法登入。
- 使用者名稱不可以出現(xiàn)在 /etc/ftpusers 中。
- 使用者群組不可以出現(xiàn)在 /etc/ftpusers 中。
- 使用者所使用的 shell 必須要時(shí)合法的 shell。合法的 shell 會(huì)被定義在 /etc/shells 中。
- 除了匿名模式外,使用者名稱不可以是 ftp 或 anonymous。關(guān)于匿名模式,我們會(huì)在下一小節(jié)中說明。
/etc/ftpusers 定義了不可以使用 FTP 服務(wù)的使用者及群組。我們來看一下該檔案的內(nèi)容:
# $FreeBSD: src/etc/ftpusers,v 1.13 2004/06/30 16:47:08 maxim Exp $ # # list of users disallowed any ftp access. # read by ftpd(8). root toor daemon operator bin tty kmem games news @guest ... |
我們可以看到該檔案中已經(jīng)有一些使用者不可以登入 FTP。這些使用者都是系統(tǒng)預(yù)設(shè)的賬號(hào),我們也可以經(jīng)由修改它來加入其它使用者。
在 /etc/ftpusers 中,如果開頭是 "@" 表示群組名稱。例如上述檔案內(nèi)容中的 @guest 表示群組 guest 不可以登入系統(tǒng)。
除了控制使用者賬號(hào)外,在「inetd」模式下,我們還可以控制聯(lián)機(jī)來源。所有 FreeBSD 中由 inetd 所啟動(dòng)的服務(wù)都可以經(jīng)由修改 /etc/hosts.allow 以使用 TCP Wrappd 來限制聯(lián)機(jī)來源。下列為預(yù)設(shè)的 /etc/hosts.allow 內(nèi)容:
# Provide a small amount of protection for ftpd ftpd : localhost : allow ftpd : .nice.guy.example.com : allow ftpd : .evil.cracker.example.com : deny ftpd : ALL : allow |
如果我們要限制某幾個(gè) IP 或網(wǎng)域不能使用 FTP,可以使用下列范例:
# Provide a small amount of protection for ftpd ftpd : localhost : allow ftpd : 210.122.13.5 : deny ftpd : .evil.cracker : deny ftpd : ALL : allow |
我們?cè)谏鲜龇独芯芙^ IP 210.122.13.5 及 evil.cracker 網(wǎng)域的主機(jī)使用 FTP,并在最后一行設(shè)定其它來源都許可。
如果您要設(shè)定只有某些來源可以使用 FTP,而拒絕大多數(shù)的主機(jī),則可以設(shè)定:
# Provide a small amount of protection for ftpd ftpd : localhost : allow ftpd : 192.168.0. : allow ftpd : my.friend.com : allow ftpd : ALL : deny |
我們?cè)O(shè)定了只有本機(jī) (localhost)、192.168.0.x、及 my.friend.com 才可以使用 FTP,其它聯(lián)機(jī)都拒絕。
15.3.2 限制上傳下載權(quán)限
在使用者登入后,只要目錄、檔案權(quán)限許可,它們可以自由的上傳、下載檔案。如果您希望加以限制讀寫的權(quán)限,可以在啟動(dòng) FTP 時(shí)加上下列幾個(gè)參數(shù):
參數(shù) | 意義 |
-o | 限制所有使用者只能上傳檔案,而無法下載任何檔案。 |
-r | 限制所有使用者對(duì)于服務(wù)器內(nèi)所有檔案只能只讀,不可以建立目錄、上傳、更改檔名、或任何會(huì)動(dòng)到檔案目錄的指令。 |
上述的參數(shù)必須在啟動(dòng) FTP 服務(wù)器時(shí)指定,請(qǐng)參考15.2.3 一節(jié),針對(duì) inetd 及獨(dú)立的 Daemon 有不同的設(shè)定方法。
15.3.3 chroot
一般使用者登入后,預(yù)設(shè)會(huì)進(jìn)入自己的家目錄中。使用者可以改變工作路徑到系統(tǒng)的任何目錄中。如果您希望使用者登入后只能在自己的家目錄中活動(dòng),而不能進(jìn)入其它系統(tǒng)目錄中,可以使用 chroot 的功能。
所謂的 chroot 就是將某一個(gè)目錄變成使用者看到的根目錄。例如,我們讓使用者 alex 登入后,將 /home/alex 變成根目錄。則 alex 在使用指令「cd /」時(shí),還是會(huì)停留在 /home/alex。如果他使用指令「pwd」查看目前所在路徑,則會(huì)顯示 /。如此一來,我們就可以確保使用者不會(huì)到處亂跑,進(jìn)入一些不該進(jìn)入的地方。這個(gè)功能對(duì)于提升 FTP 的安全性有莫大的助益。
設(shè)定 chroot 的方法很簡單,只要修改 /etc/ftpchroot 即可。chroot 的設(shè)定是以使用者、群組的基礎(chǔ),以下是幾個(gè)設(shè)定范例:
alex @guest john /var/ftp @other /var/ftp |
上述范例中的第一行是設(shè)定使用者 alex 登入后,以自己的家目錄為根目錄。第二行的 @guest 表示只要是群組為 guest 的使用者,都以自己的家目錄為根目錄。而第三、四行分別表示使用者 john 及群組 other 都以 /var/ftp 為根目錄。
只要我們善用 chroot 的功能,就可以加強(qiáng)保護(hù)系統(tǒng)其它目錄,讓沒有權(quán)利的使用者不可以進(jìn)入系統(tǒng)目錄中。建議您在開放 FTP 服務(wù)時(shí),將所有使用者都加入 /etc/ftpchroot 中。
15.3.4 匿名的 FTP
我們平常在登入 FreeBSD 的 FTP 站臺(tái)時(shí),可以使用 anonymous 或是 ftp 這二個(gè)使用者登入,而且在登入時(shí),任何密碼都可以通過。這種可以使用 anonymous 登入的 FTP 就叫作匿名 FTP。anonymous 及 ftp 這二個(gè)賬號(hào)是預(yù)設(shè)的匿名賬號(hào),當(dāng)使用者以匿名登入時(shí),服務(wù)器會(huì)將匿名賬號(hào)對(duì)映到系統(tǒng)內(nèi)的真實(shí)使用者 ftp。所以,如果您要提供匿名的 FTP 服務(wù),請(qǐng)使用下列指令新增使用者賬號(hào) ftp:
# pw adduser ftp # mkdir /home/ftp # chown ftp:ftp /home/ftp
我們建立了使用者 ftp 及其家目錄 /home/ftp。使用 pw 指令所建立的使用者在 /etc/master.passwd 中的密碼字段預(yù)設(shè)為 *,表示不可以登入。這個(gè)使用者除了匿名 FTP 外,將不可以使用 telnet、SSH、或是其它服務(wù)。
在新增了使用者 ftp 之后,我們就已經(jīng)支持匿名 FTP 的功能了?,F(xiàn)在您可以使用 anonymous 或 ftp 賬號(hào)登入,而且不需任何密碼。由于開放了匿名 FTP 后,任何人都可以登入系統(tǒng),所以匿名賬號(hào)登入后一定會(huì)使用 chroot,以將匿名使用者限制在家目錄中。
除了強(qiáng)制使用 chroot 外,我們還可以在啟動(dòng) FTP 時(shí)加上一些參數(shù),以針對(duì)匿名使用者進(jìn)行更多的限制。下表為啟動(dòng) FTP 服務(wù)時(shí)可以使用的參數(shù):
參數(shù) | 意義 |
-M | 禁止匿名使用者建立新的目錄。 |
-m | 允許匿名使用者覆寫一個(gè)存在的檔案。預(yù)設(shè)啟動(dòng) FTP 時(shí),并不允許匿名使用者覆寫已經(jīng)存在的檔案。當(dāng)使用者上傳檔案時(shí),如果已經(jīng)有同檔名的檔案存在,系統(tǒng)會(huì)自動(dòng)為上傳的檔案改名。 |
-O | 讓匿名使用者只能上傳檔案,下載檔案的功能會(huì)被取消。 |
匿名使用者權(quán)限除上表中的幾個(gè)參數(shù)外,一樣可以使用 -r、-o 等用來控制一般使用者權(quán)限的參數(shù)來控制匿名使用者。
匿名的 FTP 服務(wù)器可以說是危險(xiǎn)的開始,如果您沒有對(duì)匿名的使用者進(jìn)行權(quán)限控制,在開于匿名 FTP 后,將會(huì)產(chǎn)生許多安全性的問題。最常見的就是您的 FTP 服務(wù)器會(huì)被做為檔案交流的跳板或是病毒的集散地。例如,當(dāng)您的匿名 FTP 站臺(tái)允許使用者上傳、下載檔案時(shí),一定會(huì)有人將自己的檔案上傳到您的服務(wù)器中,并告訴其它人可以到您的服務(wù)器中下載檔案。此時(shí),您的服務(wù)器莫名其妙就會(huì)變成別人的服務(wù)器,任何人都可以用您的服務(wù)器、網(wǎng)絡(luò)頻寬來分享檔案。所以,在匿名模式下,最好還是在啟動(dòng) FTP 時(shí)加上參數(shù) -r 以取消上傳的功能吧。
15.4 SmbFTPD
SmbFTPD 是筆者從 FreeBSD 5.4 的 FTP daemon 修改而成的軟件。FreeBSD 內(nèi)建的 FTP 服務(wù)器比較簡單,它不支持流量控制、不支持 SSL 加密、對(duì)中文檔名的支持也比較差。例如,您無法使用「許」、「功」等中文字。SMbFTPD 除了擁有原本 FreeBSD ftpd 所有功能外,還有更多使用者權(quán)限控制、支持特殊中文字、整合設(shè)定文件路徑及更多功能。另外,它也支持 SSL/TLS 加密的功能,該功能是由 BSDftpd-ssl 移植而來。
SmbFTPD 和一般 FTP daemon 最大的不同在于它使用類似 Samba 的數(shù)據(jù)夾權(quán)限設(shè)定,您可以設(shè)定讓 FTP 使用者登入后所看到的目錄跟使用 Windows 登入 Samba 時(shí)一模一樣。也就是說 FTP 登入的使用者對(duì)于數(shù)據(jù)夾的存取權(quán)限和使用 Windows 登入 Samba 一模一樣。
而您也可以將 SmbFTPD 做為一般 FTP daemon 使用,或同時(shí)支持 Samba 模式。FreeBSD 的 FTP daemon 本來效能就很好,修改過的 SmbFTPD 效能也十分優(yōu)越,而且程序文件本身體積很小。
- 效能優(yōu)越。
- 檔案很小 (約 70KB),占用內(nèi)存空間小。
- 支援 SSL/TLS 加密。
- 可以更改 port。
- 針對(duì)使用者、群組做流量控制。
- 針對(duì)使用者、群組設(shè)定 chroot 的路徑。
- 類似 Samba 的數(shù)據(jù)夾權(quán)限,可以針對(duì)目錄設(shè)定使用者的讀寫權(quán)限。
- 限制 FTP 指令的使用,如上傳、下載等。
- 匿名使用者登入。
- 諸多匿名使用者的權(quán)限控制。
- 同時(shí)支持 Samba 權(quán)限控制模式及一般 FTP 模式。
- 可以拒絕某些使用者 "ls" 出某一個(gè) share 下的檔案。
- 可以拒絕某些使用者下載檔案或是修改已存在的檔案。
- 可以讓某個(gè)數(shù)據(jù)夾處于只能上傳的模式。
15.4.1 安裝 SmbFTPD
您可以到 http://www.twbsd.org/cht/smbftpd/index.php 下載最新版的 SmbFTPD,下載 SmbFTPD 后,解壓縮后進(jìn)行該目錄。接著您就可以執(zhí)行下列指令進(jìn)行編譯:
# ./configure # make
configure 指令會(huì)偵測(cè)您的系統(tǒng),并依您的環(huán)境以決定編譯時(shí)所要加入的功能。例如,是否支持 IPv6、SSL/TLS、TCP Wrapper、或是 PAM 等。
編譯完成后,如果您支持 SSL/TLS,您必須有 SSL 憑證。如果您有安裝 Apache+SSL,您也可以和 Apache 共享它的憑證。如果您要產(chǎn)生憑證,您必須再執(zhí)行下列指令以產(chǎn)生憑證。
# make cert
執(zhí)行上述指令后,我們會(huì)先產(chǎn)生一個(gè)根憑證,再產(chǎn)生 FTP 所使用的憑證,接著再用我們產(chǎn)生的根憑證為 FTP 用的憑證簽章。全部都完成后,我們就可以使用下列指令來安裝:
# make install
和 FreeBSD 內(nèi)建的 FTP 服務(wù)器一樣,SmbFTPD 可以使用 inetd 或是獨(dú)立的 Daemon 方式啟動(dòng)。如果您要使用 inetd 的方式啟動(dòng) SmbFTPD,請(qǐng)修改 /etc/inetd.conf 并加入下列內(nèi)容:
ftp stream tcp nowait root /usr/local/sbin/smbftpd smbftpd |
接下來請(qǐng)執(zhí)行下列指令重跑 inetd:
# kill -1 `cat /var/run/inetd.pid`
如果您要以獨(dú)立的 Daemon 方式啟動(dòng) SmbFTPD,請(qǐng)先在 /etc/rc.conf 加入下列這一行,以在開機(jī)時(shí)啟動(dòng) SmbFTPD:
smbftpd_enable="Yes" |
接下來就可以使用下列指令看看是否能啟動(dòng) SmbFTPD:
# /usr/local/etc/rc.d/smbftpd.sh start
如果您要停止 SmbFTPD:
# /usr/local/etc/rc.d/smbftpd.sh stop
SmbFTPD 是由 FreeBSD 的 FTP Deamon 改寫而成,所以有些設(shè)定和 FreeBSD 的 FTPD 相同。例如登入前及登入后的訊息可以經(jīng)由設(shè)定 /etc/ftpwelcome 及 /etc/ftpmotd 這二個(gè)檔來達(dá)成。另外,您也可以設(shè)定 /etc/hosts.allow 以限制聯(lián)機(jī)來源。不同的是,不管是以獨(dú)立的 Daemon 或是 inetd 方式啟動(dòng) SmbFTPD,都可以使用 hosts.allow 的功能。
另外,SmbFTPD 將所有設(shè)定項(xiàng)目放在 /usr/local/etc/smbftpd/smbftpd.conf 中,您可以經(jīng)由修改它來客制化您的服務(wù)器。經(jīng)由修改 smbftpd.conf,您可以設(shè)定使用不同的連接埠、更改服務(wù)器名稱、設(shè)定最大聯(lián)機(jī)數(shù)目、目錄權(quán)限、流量控制、SSL 設(shè)定等等。
下列幾個(gè)小節(jié)中,我們將介紹一些比較特別的設(shè)定,關(guān)于更多選項(xiàng)及其詳細(xì)的設(shè)定請(qǐng)參考 smbftpd.conf 一章中的說明。
15.4.2 限制登入賬號(hào)
我們可以設(shè)定限制某些賬號(hào)不可以使用 FTP 登入。使用者在登入 FTP 服務(wù)器時(shí),除了賬號(hào)密碼要符合外,還有幾個(gè)規(guī)則會(huì)拒絕該賬號(hào)登入:
- 如果 /var/run/nologin 存在,則所有賬號(hào)都不可以登入。這個(gè)檔案可以用來暫時(shí)停止 FTP 服務(wù)。
- 如果 smbftpd.conf 中 EmptyPasswdLogin 沒有設(shè)為 Yes,則使用者一定要有密碼才能登入,沒有密碼的使用者無法登入。
- 使用者名稱及群組不可以出現(xiàn)在 smbftpd.conf 中的 NoLoginList 中。
- 如果 smbftpd.conf 中 RequireValidShell 設(shè)為 Yes,則使用者所使用的 shell 必須要時(shí)合法的 shell。合法的 shell 會(huì)被定義在 /etc/shells 中。
我們可以看到在 smbftpd.conf 中有三個(gè)選項(xiàng)控制了使用者可以登入與否:EmptyPasswdLogin、NoLoginList、RequrieValidShell。 其中,NoLoginList 這個(gè)項(xiàng)目可以讓我們?cè)O(shè)定不允許登入的使用者清單。
我們?cè)?a target="_blank" href="http://www.dbjr.com.cn" class="UBBWordLink">安裝了 SmbFTPD 后,即限制了某些系統(tǒng)使用者登入。我們來看一下該選項(xiàng)的內(nèi)容:
NoLoginList root,toor,daemon,operator,lp,bin,tty,shutdown,kmem,... |
這個(gè)項(xiàng)目中,每個(gè)使用者或群組都是使用逗號(hào)分開。如果一個(gè)項(xiàng)目的開頭是 "@" 表示群組名稱。例如 @guest 表示群組 guest 不可以登入系統(tǒng)。
15.4.3 限制上下傳頻寬
SmbFTPD 支持針對(duì)不同的使用者設(shè)定不同的上下傳頻寬限制。smbftpd.conf 中的 MaxDownloadRate 及 MaxUploadRate 控制了使用者上下傳的頻寬。
這二個(gè)選項(xiàng)可以重復(fù)設(shè)定多次,以支持多個(gè)使用者及群組。MaxDownloadRate 及 MaxUploadRate 的格式如下:
MaxDownloadRate @group|user rate
其格式就是在選項(xiàng)后面加上群組或使用者名稱,最后再加上頻寬的限制,頻寬是以 KB/s 為單位。如果是群組名稱,其開頭必須加上 "@"。我們來看看下列的設(shè)定范例:
MaxDownloadRate @group100 100 MaxDownloadRate ftp 20 MaxDownloadRate @friends 1000 |
我們可以看到目前有三個(gè)控制下傳頻寬的項(xiàng)目。第一個(gè)項(xiàng)目表示群組為 group100 的使用者,其下載頻寬為 100 KB/s。第二個(gè)項(xiàng)目表示使用者 ftp 的下載頻寬為 20 KB/s。如果您支持匿名的 FTP,匿名 FTP 使用者對(duì)于系統(tǒng)而言實(shí)質(zhì)賬號(hào)是 ftp,您只要針對(duì) ftp 使用者做設(shè)定即可套用在匿名使用者 anonymous 及 ftp 上。
15.4.4 匿名的 FTP
我們平常在登入 FreeBSD 的 FTP 站臺(tái)時(shí),可以使用 anonymous 或是 ftp 這二個(gè)使用者登入,而且在登入時(shí),任何密碼都可以通過。這種可以使用 anonymous 登入的 FTP 就叫作匿名 FTP。anonymous 及 ftp 這二個(gè)賬號(hào)是預(yù)設(shè)的匿名賬號(hào),當(dāng)使用者以匿名登入時(shí),服務(wù)器會(huì)將匿名賬號(hào)對(duì)映到系統(tǒng)內(nèi)的真實(shí)使用者 ftp。所以,如果您要提供匿名的 FTP 服務(wù),必須先增加一個(gè)真實(shí)的使用者賬號(hào) ftp。
在新增了使用者 ftp 之后,我們還必須設(shè)定一下 smbftpd.conf 中關(guān)于匿名登入的項(xiàng)目。在 smbftpd 中,關(guān)于匿名 FTP 的項(xiàng)目有:AnonymousLogin、AnonymousOnly。
AnonymousLogin 控制了是否要啟用匿名使用者登入的功能。如果 AnonymousLogin 設(shè)為 Yes,表示可以使用匿名使用者登入。另外,AnonymousOnly 控制了在允許匿名使用者登入后,是否還要允許一般使用者登入。如果 AnonymousOnly 設(shè)為 Yes,則只有匿名使用者才可以登入,一般使用者都不可以登入哦。
請(qǐng)注意,雖然匿名使用者登入的賬號(hào)有二個(gè):anonymous 及 ftp。但我們不管是在設(shè)定流量、目錄權(quán)限時(shí),都只要設(shè)定真實(shí)使用者 "ftp" 賬號(hào)即可。
15.5 SmbFTPD 的目錄權(quán)限控制
15.5.1 何謂 SMB Mode
SmbFTPD 和一般的 FTP 服務(wù)器最大的不同在于它的目錄權(quán)限管理方式。SmbFTPD 有二種目錄權(quán)限管理方式:一般模式及 SMB 模式。一般模式下,SmbFTPD 的行為就和一般的 FTP 服務(wù)器一樣,使用者登入后可以看到所有的系統(tǒng)目錄。
SMB 模式比較特別,它會(huì)依照您的設(shè)定產(chǎn)生一個(gè)虛擬的根目錄,在根目錄中,只會(huì)顯示該使用者可以使用的資料夾。如果您使用過 Samba,SmbFTPD 的 SMB 模式就和 Samba 的共享數(shù)據(jù)夾設(shè)定類似。例如,您可以設(shè)定一個(gè)數(shù)據(jù)夾名為「音樂」,它的真實(shí)目錄是在 /home/mp3,并可以設(shè)定哪些使用者可以存取此數(shù)據(jù)夾、只讀或可擦寫、是否可以下載檔案等等。
以下列數(shù)據(jù)夾設(shè)定文件為例:
[音樂] path = /home/mp3 rw = alex ro = @guest, john disable_download = ftp [upload] path = /var/ftp rw = ftp,alex disable_ls = ftp disable_download = ftp |
上述的范例中,我們有二個(gè)共享數(shù)據(jù)夾:「音樂」及「upload」。其中,path 為該數(shù)據(jù)夾位于系統(tǒng)中的真實(shí)目錄。rw 為具有讀寫權(quán)限的使用者 清單,而 ro 為只讀的使用者清單。在上述的設(shè)定下,使用者 alex 登入后,如果他在根目錄中下「ls」指令,他將看到下列內(nèi)容:
ftp> ls / 200 PORT command successful. 150 Opening ASCII mode data connection for 'file list'. dr-x------ 1 root users 512 Feb 3 21:40 音樂 dr-x------ 1 root users 2048 Aug 28 03:18 upload 226 Transfer complete. ftp> |
我們可以看到使用者 alex 登入后,他所看到的根目錄只有二個(gè)數(shù)據(jù)夾:「音樂」及「upload」。他的活動(dòng)范圍也將只限于這二個(gè)數(shù)據(jù)夾,而無法進(jìn)入系統(tǒng)中的其它目錄。也就是說,如果 alex 輸入指令「cd /upload」則會(huì)進(jìn)入「upload」這個(gè)數(shù)據(jù)夾中 (在系統(tǒng)中的真正路徑是 /var/ftp)。
SMB 模式的好處在于您可以將不同目錄集中設(shè)定成位于虛擬的根目錄中,并針對(duì)這些目錄設(shè)定不同使用者的權(quán)限。使用者權(quán)限可以是只讀、可擦寫、禁止下載檔案、禁止看到目錄中的檔案內(nèi)容,您甚至可以設(shè)定其一個(gè)資料夾為隱藏,「ls」時(shí)看不到該目錄,但卻可以「cd」進(jìn)入目錄中。
SMB 模式是一個(gè)比較有彈性的目錄權(quán)限管理方式,您可以經(jīng)由設(shè)定 SMB 模式達(dá)到多種不同的目錄權(quán)限控制。
我們還可以讓某些使用者使用一般模式,某些使用者使用 SMB 模式。這些設(shè)定十分容易,我們將在下一小節(jié)中做說明。
15.5.2 如何設(shè)定 SMB Mode
在 smbftpd.conf 中有三個(gè)選項(xiàng)和 SMB 模式的目錄權(quán)限管理有關(guān):DefaultMode、ExceptionList、ShareConfPath。
DefaultMode 設(shè)定了預(yù)設(shè)的目錄權(quán)限管理模式為何,而 ExecptionList 為例外的清單。如果 DefaultMode 為 Normal,而 ExceptionList 中有使用者 alex,則除了 alex 會(huì)使用 SMB 模式外,其它使用者都會(huì)使用一般模式。反之,如果 DefaultMode 為 SMB,則 ExceptionList 中的使用者或群組將使用一般模式,其它的使用者會(huì)使用 SMB 模式的目錄權(quán)限管理方式。
ShareConfPath 設(shè)定了共享數(shù)據(jù)夾設(shè)定文件的位置,預(yù)設(shè)為 /usr/local/etc/smbftpd/smbftpd_share.conf。每一個(gè)以中括號(hào)括起來的區(qū)段都是一個(gè)數(shù)據(jù)夾的設(shè)定,下列即為數(shù)據(jù)夾設(shè)定的范例:
[音樂] path = /home/mp3 rw = alex ro = @guest, john disable_download = ftp |
每一個(gè)資料夾的區(qū)段都有下列這幾個(gè)關(guān)鍵詞可用:
- path:設(shè)定數(shù)據(jù)夾的實(shí)際路徑。
- rw:設(shè)定具有讀寫權(quán)限的使用者及群組。
- ro:設(shè)定只能進(jìn)行只讀的使用者及群組。
- disable_download:設(shè)定禁止使用下載功能的使用者及群組。
- disable_ls:設(shè)定在數(shù)據(jù)夾中 ls 看不到數(shù)據(jù)夾內(nèi)容的使用者及群組。
- disable_modify:設(shè)定不可以修改此資料夾中已經(jīng)在的檔案之使用者及群組。在此項(xiàng)目中的使用者或群組無法更名、刪除、修改已存在的檔案或目錄,只能上傳及建立新目錄。但前提是使用者必須具有 rw 的權(quán)限。
- browseable:設(shè)定此數(shù)據(jù)夾在列出根目錄的所有數(shù)據(jù)夾時(shí)是否要顯示。這個(gè)項(xiàng)目只能設(shè)定 Yes 或 No,如果設(shè)定為 No,則使用者 「ls /」時(shí)將看不到此數(shù)據(jù)夾,但可以使用「cd」指令進(jìn)入該數(shù)據(jù)夾內(nèi)。
除了 path 及 browseable 外,每一個(gè)項(xiàng)目可以加上使用者及群組的設(shè)定。如果是群組名稱,其開頭必須加上 "@" 符號(hào)。例如,上述范例中,@guest 表示 guest 群組。
您必須要特別注意的是,當(dāng)您設(shè)定了使用者對(duì)于數(shù)據(jù)夾的權(quán)限是只讀或可擦寫后,該使用者或群組在系統(tǒng)中的 UNIX 權(quán)限也必須要符合設(shè)定才會(huì)有作用。例如,如果一個(gè)數(shù)據(jù)夾對(duì)使用者 alex 設(shè)定為可擦寫,您必須確定 alex 對(duì)于數(shù)據(jù)夾在系統(tǒng)中的權(quán)限是可擦寫,如果不是,您必須使用 chmod 的指令改變?cè)撃夸浀膶傩浴?/p>
另外,我們有一個(gè)特別的數(shù)據(jù)夾名稱「homes」,如果有 homes 這個(gè)數(shù)據(jù)夾的設(shè)定,則使用者登入后會(huì)看到一個(gè)數(shù)據(jù)夾名為「home」,該數(shù)據(jù)夾即為使用者的家目錄。家目錄預(yù)設(shè)是該使用者具有讀寫的權(quán)限,所以您無法設(shè)定 rw、ro 這二個(gè)參數(shù)。而且,您也無法設(shè)定 path,使用者家目錄的所在路徑是由系統(tǒng)密碼文件中的設(shè)定而決定。您只能設(shè)定 browseable、disable_ls、disable_modify、及 disable_download。
如果您的 SmbFTPD 支持匿名使用者,匿名使用者 anonymous 及 ftp 會(huì)被對(duì)映到真實(shí)的使用者 ftp,您只要針對(duì) ftp 使用者做設(shè)定即會(huì)套用在匿名使用者上。
在修改了 smbftpd_share.conf 后,您必須重新啟動(dòng) SmbFTPD 后設(shè)定才會(huì)生效。
15.5.3 設(shè)定范例
我們列舉幾個(gè)設(shè)定的范例讓您參考。
范例一:
我們?cè)O(shè)定一個(gè)數(shù)據(jù)夾名為「public」,其真實(shí)路徑是 /home/public。只有 wheel 群組的使用者具有讀寫權(quán)限,而匿名使用者及 guest 群組只具有只讀的權(quán)限。
[public] path = /home/public rw = @wheel ro = @guest, ftp |
范例二:
我們?cè)O(shè)定一個(gè)數(shù)據(jù)夾名為「private」,其真實(shí)路徑是 /home/movie。只有使用者 alex 具有讀寫的權(quán)限,而 friend 群組只能只讀,另外,guest 群組的使用者無法下載該數(shù)據(jù)夾中的任何檔案。
[public] path = /home/movie rw = alex ro = @guest, @friend disable_download = @guest |
范例三:
我們?cè)O(shè)定一個(gè)數(shù)據(jù)夾名為「upload」,其真實(shí)路徑是 /var/ftp/pub。只有使用者 alex 具有完整的讀寫權(quán)限,匿名使用者無法下載檔案、看不到目錄中的檔案、無法修改目錄中的檔案、只能上傳檔案。
[upload] path = /var/ftp/pub rw = alex,ftp disable_download = ftp disable_modify = ftp disable_ls = ftp |
15.5.4 chroot
我們除了可以使用 SMB 模式以創(chuàng)造出虛擬的根目錄外,SmbFTPD 還支持 chroot 的功能。
所謂的 chroot 就是將某一個(gè)目錄變成使用者看到的根目錄。例如,我們讓使用者 alex 登入后,將 /home/alex 變成根目錄。則 alex 在使用指令「cd /」時(shí),還是會(huì)停留在 /home/alex。如果他使用指令「pwd」查看目前所在路徑,則會(huì)顯示 /。如此一來,我們就可以確保使用者不會(huì)到處亂跑,進(jìn)入一些不該進(jìn)入的地方。這個(gè)功能對(duì)于提升 FTP 的安全性有莫大的助益。
當(dāng)一個(gè)使用者同時(shí)屬于 SMB 模式及 chroot 時(shí),我們會(huì)使用 chroot 而非 SMB 模式。
設(shè)定 chroot 的方法很簡單,只要修改 smbftpd.conf,將使用者加入 ChrootSet 即可。ChrootSet 選項(xiàng)的設(shè)定是以使用者、群組的基礎(chǔ),我們可以同時(shí)設(shè)定多個(gè) ChrootSet。以下是幾個(gè)設(shè)定范例:
ChrootSet ftp /var/spool/ftp ChrootSet @ftpgroup ~ ChrootSet @webusers ~/public_html |
上述范例中的第一行是設(shè)定所有匿名的使用者都以 /var/spool/ftp 為根目錄。第二行表示只要是群組為 ftpgroup 的使用者都以自己的家目錄為根目錄。而第三行表示只要是群組為 webusers 的使用者都以自己家目錄下的 public_html 為根目錄。
在 ChrootSet 的選項(xiàng)中,群組名稱開頭都會(huì)有 "@" 符號(hào)。而目錄名稱 "~" 表示是使用者的家目錄。
另外,如果只有一個(gè) "@" 符號(hào),表示所有使用者。下列范例即表示所有的使用者都以自己的家目錄為根目錄:
ChrootSet @ ~ |
只要我們善用 chroot 的功能,就可以加強(qiáng)保護(hù)系統(tǒng)其它目錄,讓沒有權(quán)利的使用者不可以進(jìn)入系統(tǒng)目錄中。
15.6 SSL/TLS 聯(lián)機(jī)加密
15.6.1 設(shè)定啟用 SSL/TLS
當(dāng)我們使用網(wǎng)絡(luò)服務(wù)時(shí),經(jīng)由網(wǎng)絡(luò)傳送的數(shù)據(jù)都有可能被他人攔截竊聽。簡單的說,當(dāng)您從網(wǎng)頁上輸入賬號(hào)密碼時(shí),如果有人在您所使用的計(jì)算機(jī)和服務(wù)器之間攔截,就可以輕易的從網(wǎng)絡(luò)封包中竊聽到您所輸入的數(shù)據(jù)。
SSL 的加密方式是由服務(wù)器端提供了一組加解密用的金鑰,在服務(wù)器端所使用的是私密金鑰 (Private key),而客戶端所使用的是公開金鑰 (Public key)。在聯(lián)機(jī)建立后,HTTP 服務(wù)器會(huì)將公開金鑰傳給客戶端使用。公開金鑰加密過的資料只能由私密金鑰解密,在客戶端要送出數(shù)據(jù)之前,會(huì)先使用公開金鑰進(jìn)行加密的動(dòng)作,而服務(wù)器收到數(shù)據(jù)后,會(huì)使用私密金鑰進(jìn)行解密。
如果您的系統(tǒng)有安裝 OpenSSL,則 SmbFTPD 安裝后即支持 SSL 的功能。在下列 configure 的訊息中,「Check SSL support」為「YES」表示有支持 SSL。
# ./configure opie.................. [YES] libutil.h............. [YES] O_EXLOCK.............. [YES] FD_COPY............... [YES] TCP Wrapper........... [YES] Have printflike....... [YES] pw_expire............. [YES] bsd glob.............. [YES] MD5File............... [YES] user_from_uid......... [YES] Shadow passowd........ [NO] Linux sendfile........ [NO] FreeBSD sendfile...... [YES] Use PAM............... [YES] Check setproctitle.... [YES] Check fgetln.......... [YES] Check sin_len......... [YES] Check IPv6 support.... [YES] Check SSL support..... [YES] Finished configure.
在執(zhí)行完 configure 及 make 之后,即完成編譯。在安裝前,我們會(huì)執(zhí)行「make cert」以產(chǎn)生 SSL 憑證。最后「make install」會(huì)將 SSL 憑證安裝在 /usr/local/etc/smbftpd/ 目錄中。
在啟動(dòng) SmbFTPD 之前,您必須先設(shè)定 smbftpd.conf 以啟用 SSL 功能。smbftpd.conf 中所有 SSL 相關(guān)的選項(xiàng)說明請(qǐng)參考下一章的說明,我們這里只說明幾個(gè)常用的項(xiàng)目。
首先是「SecurityPolicy」,這個(gè)項(xiàng)目用來控制是否要啟用 SSL 的功能?!竤ecure」 為只允許使用 SSL 聯(lián)機(jī),「nosecure」 為不使用 SSL 聯(lián)機(jī),「both」 為二種聯(lián)機(jī)都支持,預(yù)設(shè)為 「both」。
「NormalUserMustSecure」用來控制是否要強(qiáng)制一般使用者使用 SSL 聯(lián)機(jī)。因?yàn)?SSL 主要是用來保護(hù)密碼、個(gè)人數(shù)據(jù),如果您強(qiáng)制將「NormalUserMustSecure」設(shè)為 Yes,則一般使用者一定要使用 SSL 才能登入。
「AnonymDisableSecure」用以控制匿名使用者是否要使用 SSL。當(dāng) AnonymDisableSecure 設(shè)為「Yes」時(shí),系統(tǒng)將不允許匿名的使用者使用加密的聯(lián)機(jī)。既然 SSL/TLS 的目的是避免使用者數(shù)據(jù)在網(wǎng)絡(luò)上流傳,而匿名使用者是任何人都可以使用,保護(hù)匿名使用者的數(shù)據(jù)似乎比較不需要。所以您可以將這個(gè)選項(xiàng)設(shè)為「No」,以避免匿名使用者也使用加密聯(lián)機(jī)登入,徒然耗費(fèi) CPU 的資源。
15.6.2 安裝支持 SSL/TLS 的客戶端軟件
在支持 SSL/TLS 的客戶端軟件方面,如果您使用 Windows,建議您使用 Filezilla (http://filezilla.sourceforge.net/)。Filezilla 支持 SSL 及 TLS,而且 FTP client 的功能相當(dāng)完整。它是一套免費(fèi)、持續(xù)更新中的軟件。
如果您使用 FreeBSD,可以使用下列指令安裝 ftp-tls:
# cd /usr/ports/ftp/ftp-tls # make install
接下來您就可以使用下列指令連到您的 FTP Server 了:
# /usr/bin/ftp-tls 192.168.0.1
15.7 smbftpd.conf
15.7.1 系統(tǒng)區(qū)段
ServerName 定義服務(wù)器名稱
這個(gè)選項(xiàng)可以用來定義您的服務(wù)器名稱,當(dāng)使用者登入后將看到:
Connected to localhost.com.
220 Server Name FTP server (SmbFTPD Ver 0.9) ready.
Name (localhost:alex):
如果您沒有設(shè)定 ServerName,則 SmbFTPD 將顯示系統(tǒng)的 Hostname。
ServerName "Server Name" |
ListenOnAddress 設(shè)定要提供服務(wù)的 IP
當(dāng)使用 -D 模式 (standalone) 啟動(dòng) FTP 時(shí),您可以指定只接受連到這個(gè)地址的聯(lián)機(jī)。例如,假設(shè)您有二張網(wǎng)絡(luò)卡,一個(gè) IP 是 172.16.1.1,另一個(gè)是 61.62.63.64,您可以設(shè)定 ListenOnAddress 172.16.1.1 以表示只接受連到這個(gè) IP 的聯(lián)機(jī)。
如果您要接受所有聯(lián)機(jī),則請(qǐng)移除這個(gè)選項(xiàng)。
ListenOnAddress 192.168.0.1 |
Port 設(shè)定連接埠
當(dāng)使用 -D 模式 (standalone) 啟動(dòng) FTP 時(shí),您可以指定 SmbFTPD 所要使用的 Port。一般的 FTP port 為 21,您也可以使用 ftp 這個(gè)字符串表示,系統(tǒng)會(huì)自動(dòng)去 /etc/service 中查到相對(duì)的 port。
Port 21 |
Umask 設(shè)定新建檔案的權(quán)限
當(dāng)使用者建立檔案或目錄時(shí),所要使用的 umask。例如,您想要讓使用者新增檔案時(shí)的權(quán)限為 644,則設(shè) umask 為 022。詳細(xì)關(guān)于 umask 的設(shè)定請(qǐng) man 2 umask。這個(gè)選項(xiàng)的值必須為 8 進(jìn)位的數(shù)字,如 022、027 等。
Umask 022 |
PidFile 設(shè)定存放 Process ID 的檔案
這是您要存放 smbftpd pid 檔的地方,當(dāng)使用 daemon 模式時(shí),我們會(huì)將 smbftpd 的 process id 寫到這個(gè)檔案中。
PidFile /var/run/smbftpd.pid |
DebugMode 啟用除錯(cuò)模式
是否要用 syslog 記錄更多除錯(cuò)用的訊息。這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
DebugMode No |
LogCommand 記錄使用者執(zhí)行過的指令
是否要使用 syslog 的 LOG_FTP 記錄使用者執(zhí)行過的 FTP 指令。如果您將這個(gè)指令設(shè)為 Yes, 則使用者所執(zhí)行的 retrieve(get)、store(put)、append、delete、mkdir、rmdir、rename 等都會(huì)被記錄下來,并用記錄該指令的文件名參數(shù)。在 FreeBSD 中,syslogd 會(huì)將這些記錄在 /var/log/xferlog 中。 這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
LogCommand No |
DoWtmpLog 記錄登入記錄
是否要將 ftp 聯(lián)機(jī)記錄在 /var/log/wtmp 中。這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
DoWtmpLog No |
DisableEPSV 停用指令 EPSV
是否要停用 EPSV 這個(gè)指令。如果您的服務(wù)器位于一些舊的防火墻后面,而一直無法聯(lián)機(jī),您可以設(shè)著停用 EPSV。這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
DisableEPSV No |
ShowSymlink 是否要顯示符號(hào)連結(jié)文件
當(dāng) ShowSymlink 為 No ,我們?cè)谑褂谜?ls 時(shí)不會(huì)列出 symbolic link 的檔案或目錄。這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
ShowSymlink No |
RestrictedPorts 禁止使用小于 1024 的埠號(hào)
當(dāng)這個(gè)選項(xiàng)設(shè)為 No 時(shí),smbftpd 將不檢查限制使用者使用的連結(jié)埠。我們預(yù)設(shè)限制使用者在使用 PORT 命令時(shí),只能使用 unprivileged ports (> 1024),不過這樣將違反 FTP protocol。
這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
RestrictedPorts Yes |
RestrictedDataPorts 限制數(shù)據(jù)聯(lián)機(jī)所使用的端口號(hào)
這個(gè)指令設(shè)成 NO 時(shí),smbftpd 將只使用 port 定義范圍在 IP_PORTRANGE_DEFAULT 的 port,而非 IP_PORTRANGE_HIGH 的 port。這個(gè)選項(xiàng)對(duì)于某些特殊的防火墻設(shè)定蠻有用的。請(qǐng) man 4 ip 以得到更多信息。
這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
RestrictedDataPorts Yes |
15.7.2 使用者登入控制
MaxConnection 設(shè)定最多聯(lián)機(jī)數(shù)目
這個(gè)選項(xiàng)可以讓您控制最多同時(shí)聯(lián)機(jī)的數(shù)量。如果 MaxConnection 大于 0,則在聯(lián)機(jī)數(shù)目到達(dá)您所設(shè)定的值時(shí),使用者就無法再登入。如果值為 0,則表示不做任何限制。
MaxConnection 30 |
RequireValidShell 登入的使用者是否要有合法 Sheel
當(dāng) RequireValidShell 為 Yes 時(shí),使用者必須有合法的 shell 才可以登入。合法的 shell 是以 getusershell(3) 這個(gè)函數(shù)取得,大多數(shù)的操作系統(tǒng)中,合法的 shell 都被定義在 /etc/shells 中。這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
RequireValidShell No |
EmptyPasswdLogin 是否允許空白密碼
是否允許空密碼的使用者登入。
這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
EmptyPasswdLogin No |
NoLoginList 設(shè)定禁止登入的使用者清單
設(shè)定您不想讓其登入的使用者,在 NoLoginList 中的使用者或群組不可以登入。
NoLoginList 的參數(shù)可以是使用者或是群組,如果是設(shè)定群組,請(qǐng)?jiān)谌航M名稱前加上 @。當(dāng)要設(shè)定多個(gè)使用者或群組時(shí),請(qǐng)使用逗號(hào) , 分開。 匿名使用者「ftp」及「anonumous」會(huì)被對(duì)映到真實(shí)的使用者「ftp」,如果您要設(shè)定的是匿名的使用者「ftp」及「anonymous」,請(qǐng)使用「ftp」這個(gè)使用者。
例如:
NoLoginList user1,@group1,user2
表示不允許使用者 user1, user2 及群組 group1 登入。
NoLoginList user1,user2,@group1,@group2 |
TimeOut 設(shè)定聯(lián)機(jī)逾時(shí)秒數(shù)
當(dāng)使用者超過這個(gè)時(shí)間沒有任何動(dòng)作時(shí),則中斷聯(lián)機(jī)。單位為秒。
TimeOut 900 |
MaxTimeOut 設(shè)定最大聯(lián)機(jī)逾時(shí)秒數(shù)
使用者可以自行設(shè)定 timeout 的時(shí)間,但我們可以在這里設(shè)定最長 timeout 的時(shí)間。預(yù)設(shè)是 2 小時(shí)。
MaxTimeOut 7200 |
15.7.3 FTP 目錄權(quán)限控制
DefaultMode 預(yù)設(shè)的權(quán)限控制模式
SmbFTPD 有二種模式,一個(gè)是 SMB mode,另一個(gè)是 Normal mode。在 SMB 模式中,SmbFTPD 會(huì)使用類似 Samba 的共享數(shù)據(jù)夾權(quán)限設(shè)定,系統(tǒng)會(huì)讀取 ShareConfPath 中的使用者目錄權(quán)限控制來設(shè)定他對(duì)于數(shù)據(jù)夾的存取權(quán)限。而 Normal 模式中,SmbFTPD 就像一般 FTP Daemon 一樣。
這個(gè)選項(xiàng)的值可以是 Normal 或 SMB,預(yù)設(shè)為 Normal。
DefaultMode Normal |
ExceptionList 設(shè)定不使用預(yù)設(shè)權(quán)限控制模式的使用者
您可以在 ExceptionList 中設(shè)定不要使用 DefaultMode 的使用者及群組。例如,您如果希望所有人都使用 SMB 模式,但群組 wheel 要使用一般模式,則請(qǐng)將 DefaultMode 設(shè)為 SMB,再在 ExceptionList 中設(shè)定 @wheel 即可。
ExceptionList 的參數(shù)可以是使用者或群組,如果是群組的話,請(qǐng)?jiān)谌航M名稱前加上 @。例如:
ExceptionList user1,user2,@group1,@group2 |
ShareConfPath 設(shè)定數(shù)據(jù)夾權(quán)限設(shè)定文件位置
設(shè)定數(shù)據(jù)夾設(shè)定的 smbftpd_share.conf 所在路徑。如果您設(shè)定 DefaultMode 為 SMB,或是 DefaultMode 為 Normal 但有 ExceptionList,則一定要指定 smbftpd_share.conf 的所在路徑。
我們會(huì)檢查 smbftpd_share.conf 中的下列關(guān)鍵詞設(shè)定:
- path:數(shù)據(jù)夾的路徑。
- rw:可以有寫入權(quán)限的使用者或群組。
- ro:可以有只讀權(quán)限的使用者或群組。
- browseable:資料夾是否要設(shè)為隱藏。若設(shè)為 no,則使用者在根目錄 ls 時(shí),將看不到該數(shù)據(jù)夾,但依然可以 cd 到該數(shù)據(jù)夾中。
- disable_download:設(shè)定不可以下載的使用者。若使用者可以讀取該資料夾內(nèi)容,您還可以設(shè)定讓它無法執(zhí)行下載的動(dòng)作。
- disable_ls:設(shè)定在資料夾中執(zhí)行 ls 時(shí),不可以看到資料夾內(nèi)容的使用者及群組。
- disable_modify:設(shè)定不可以修改該資料夾中的檔案或目錄的使用者及群組。如果該使用者具有讀寫的權(quán)限,但又在此列表中,則該使用者只能上傳檔案或是建立新的目錄,而無法執(zhí)行 rename、delete、rmdir、chmod 等指令。
范例一:
這個(gè)范例是有一個(gè)數(shù)據(jù)夾名為 public,其所在目錄為 /home/public,在 samba 群組中的使用者可以有只讀的權(quán)限,而 root 可以有寫入的權(quán)限。
[public] path = /home/public rw = root ro = @samba
范例二:
數(shù)據(jù)夾名稱為 private,只有 wheel 群組的人可以寫入,而且這個(gè)數(shù)據(jù)夾是隱藏的,wheel 群組的人登入后使用 ls 看不到這個(gè)資料夾,但是可以 cd 進(jìn)去資料夾中。
[private] path = /root/ftp rw = @wheel browseable = no
范例三:
數(shù)據(jù)夾名稱為 upload, 使用者「ftp」及「anonymous」只能上傳檔案或建立新目錄,但是無法看到該數(shù)據(jù)夾中的內(nèi)容,也不可以下載或是修改現(xiàn)有的檔案。但在使用者「wheel」群組中的使用者可以具有全部的讀寫權(quán)限。
[upload] path=/home/upload" rw=ftp,@wheel disable_ls=ftp disable_modify=ftp disable_download=ftp
請(qǐng)注意,匿名使用者「ftp」及「anonumous」會(huì)被對(duì)映到真實(shí)的使用者「ftp」,如果您要設(shè)定的是匿名的使用者「ftp」及「anonymous」,請(qǐng)使用「ftp」這個(gè)使用者。
如果您設(shè)定某個(gè)使用者對(duì)于某個(gè)數(shù)據(jù)夾有寫入的權(quán)限,但該使用者卻無法寫入,因?yàn)槌?SmbFTPD 的權(quán)限控制外,您還必須對(duì)數(shù)據(jù)夾的 UNIX 權(quán)限做一些設(shè)定,讓該數(shù)據(jù)夾的 UNIX 權(quán)限允許該使用者寫入。
ShareConfPath /some/where/smbftpd_share.conf |
ChrootSet 設(shè)定使用 chroot 的使用者
在這個(gè)列表中的使用者或群組會(huì)被 chroot 到您所指定的路徑中,也就是讓它將您所設(shè)定的路徑做為根目錄,使用者無法到該路徑以外的地方。如果有需要,您可以同時(shí)設(shè)定多條 ChrootSet 的規(guī)則。
這個(gè)參數(shù)的第一個(gè)字段是使用者名稱或群組,如果在名稱之前加上 @,表示是群組,所有在該群組中的使用者都會(huì)被套用到群組的設(shè)定中。而另一個(gè)特別的用法是只有一個(gè) @ 符號(hào),表示所有使用者都會(huì)被套用到這個(gè)設(shè)定中。
請(qǐng)注意,被設(shè)定為 chroot 的使用者就算 DefaultMode 被歸類為 SMB mdoe 也一定會(huì)被強(qiáng)制使用 Normal mode。
這里有幾個(gè)設(shè)定的范例:
范例一:
使用者 ftp 登入時(shí),將它 chroot 到 /var/spool/ftp
ChrootSet ftp /var/spool/ftp
范例二:
所有群組為 ftpgroup 的使用者都使用他們的家目錄 (home) 做為根目錄。例如,使用者 alex 的家目錄為 /home/alex,則其根目錄為 /home/alex,而 jack 則是 /home/jack。我們以 ~ 符號(hào)表示家目錄,系統(tǒng)會(huì)自動(dòng)轉(zhuǎn)換為真正的路徑。
ChrootSet @ftpgroup ~
范例三:
所有 webusers 這個(gè)群組的人都以其家目錄下的 public_html 為根目錄。這對(duì)于您要開放 FTP 給某些使用者,但又不想讓他們?nèi)ゴ嫒?a target="_blank" href="http://www.dbjr.com.cn" class="UBBWordLink">系統(tǒng)中其它路徑時(shí)十分有用。
ChrootSet @webusers ~/public_html
范例四:
所有使用者都必須以其家目錄為根目錄。
ChrootSet @ ~
ChrootSet @webusers ~/public_html ChrootSet @ ~ |
15.7.4 匿名使用者控制
AnonymousLogin 是否支持匿名使用者登入
是否允許匿名使用者登入。匿名的使用者賬號(hào)為 ftp 或 anonymous。如果您要允許匿名使用者登入,您必須先新增一個(gè) ftp 的系統(tǒng)使用者。
這個(gè)選項(xiàng)的值可以是 Yes 或 No,默認(rèn)值為 No。
AnonymousLogin No |
AnonymousOnly 是否只允許匿名使用者登入
是否只允許匿名使用者登入。若設(shè)為 Yes,則一般使用者無法登入。
AnonymousOnly No |
15.7.5 檔案?jìng)鬏斂刂?/font>
TransferLog 設(shè)定上下傳記錄文件位置
這個(gè)選項(xiàng)用來設(shè)定使用者上傳及下載的檔案記錄。您可以設(shè)定當(dāng)使用者下載或上傳檔案時(shí),將它所上傳或下載的檔名、傳輸時(shí)間、大小等數(shù)據(jù)寫在這個(gè)檔案中。
TransferLog /var/run/smbftpd.log |
MaxDownloadRate 設(shè)定最大下傳速度
您可以針對(duì)使用者及群組設(shè)定最大的下載頻寬。頻寬 rate 的單為是 KB/s。您也可以設(shè)定多條 MaxDownloadRate 規(guī)則。
這個(gè)選項(xiàng)的第一個(gè)參數(shù)可以是使用者或群組,如果是群組,則名稱開頭必須加上 @。而若只有一個(gè) @ 符號(hào),表示所有使用者都要套用到該規(guī)則。
MaxDownloadRate @group100 100 MaxDownloadRate ftp 20 MaxDownloadRate @friends 1000 |
MaxUploadRate 設(shè)定最大上傳速度
您可以針對(duì)使用者及群組設(shè)定最大的上傳頻寬。頻寬 rate 的單為是 KB/s。您也可以設(shè)定多條 MaxDownloadRate 規(guī)則。
這個(gè)選項(xiàng)的第一個(gè)參數(shù)可以是使用者或群組,如果是群組,則名稱開頭必須加上 @。而若只有一個(gè) @ 符號(hào),表示所有使用者都要套用到該規(guī)則。
MaxUploadRate @group100 100 MaxUploadRate ftp 20 MaxUploadRate @friends 1000 |
15.7.6 SSL/TLS 控制
SecurityPolicy 設(shè)定是否使用 SSL/TLS
這個(gè)選項(xiàng)可以讓您設(shè)定是否要啟用 SSL/TLS 加密。您可以 強(qiáng)制一定要使用加密聯(lián)機(jī),或是關(guān)閉加密功能,或是同時(shí)允許加密及非加密模式。各種模式的說明如下:
- secure:只允許加密聯(lián)機(jī)。
- nosecure:只允許非加密聯(lián)機(jī)。
- both:同時(shí)允許加密及非加密聯(lián)機(jī)。
您可以將 SecurityPolicy 設(shè)為 secure、nosecure、或 both,默認(rèn)值是同時(shí)允許加密及非加密聯(lián)機(jī)。
SecurityPolicy both |
EncryptionType 設(shè)定加密類型
當(dāng)您要使用加密聯(lián)機(jī)時(shí),您可以選擇要支持哪一種加密模式。SmbFTPD 支持二種模式:SSL 及 TLS,您可以使用下列設(shè)定值以選擇要使用另一種模式:
- TLS:只使用 RFC 2228 所定義的 FTP-TLS 模式。
- SSL:只支持 FTP-SSL 模式。
- Both:同時(shí)支持 SSL 及 TLS。
默認(rèn)值是同時(shí)支持 SSL 及 TLS。
EncryptionType both |
NormalUserMustSecure 強(qiáng)制一般使用者使用加密聯(lián)機(jī)
當(dāng) NormalUserMustSecure 設(shè)為「Yes」時(shí),表示一般使用者登入時(shí)一定要使用加密的聯(lián)機(jī),否則無法登入。
我們?cè)?FTP 服務(wù)中使用 SSL/TLS 的目的是為了避免使用者的機(jī)密數(shù)據(jù)在網(wǎng)絡(luò)上以明碼流傳,為了強(qiáng)制所有使用者都使用比較安全的模式聯(lián)機(jī),您可以將這個(gè)選項(xiàng)設(shè)為「Yes」。
NormalUserMustSecure No |
AnonymDisableSecure 設(shè)定不允許匿名使用者使用加密聯(lián)機(jī)
當(dāng) AnonymDisableSecure 設(shè)為「Yes」時(shí),系統(tǒng)將不允許匿名的使用者使用加密的聯(lián)機(jī)。
既然 SSL/TLS 的目的是避免使用者數(shù)據(jù)在網(wǎng)絡(luò)上流傳,而匿名使用者是任何人都可以使用,保護(hù)匿名使用者的數(shù)據(jù)似乎比較不需要。所以您可以將這個(gè)選項(xiàng)設(shè)為「No」,以避免匿名使用者也使用加密聯(lián)機(jī)登入,徒然耗費(fèi) CPU 的資源。
AnonymDisableSecure No |
SSLCertFile 設(shè)定公開金鑰位置
設(shè)定所要使用的憑證,這個(gè)憑證會(huì)被送到客戶端做為加密用。如果您沒有設(shè)定這個(gè)選項(xiàng),預(yù)設(shè)會(huì)使用 /usr/local/etc/smbftpd/ssl.crt/server.crt。
您也可以和 Apache+SSL 共享憑證,Apache 的 SSL 憑證通常位于 /usr/local/etc/apache2/ssl.crt/server.crt。
SSLCertFile /usr/local/etc/smbftpd/ssl.crt/server.crt |
SSLKeyFile 設(shè)定私密金鑰位置
這個(gè)選項(xiàng)是用來設(shè)定您上述設(shè)定的憑證所對(duì)映的 private key。這個(gè) private key 和憑證是成對(duì)的,預(yù)設(shè)是在 /usr/local/etc/smbftpd/ssl.key/server.key。
如果您使用 Apache SSL 憑證,則這里也必須設(shè)定使用 Apache 的 key,通常位于 /usr/local/etc/apache2/ssl.key/server.key。
SSLKeyFile /usr/local/etc/smbftpd/ssl.key/server.key |
SSLDebugMode 是否啟用 SSL 的除錯(cuò)模式
設(shè)定是否要啟動(dòng) SSL 的除錯(cuò)模式,當(dāng)設(shè)為「Yes」時(shí),您還必須要設(shè)定記錄文件位置 SSLDebugLog。
SSLDebugMode No |
SSLDebugLog 設(shè)定除錯(cuò)記錄文件位置
設(shè)定 SSL 除錯(cuò)模式的記錄文件要放在什么地方。
SSLDebugLog /var/log/smbftpd-ssl.log |
相關(guān)文章
Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié)
這篇文章主要介紹了Unix,BSD,Linux系統(tǒng)三者的區(qū)別小結(jié),需要的朋友可以參考下2023-05-03- 一些朋友問小編FreeBSD如何添加硬盤?別擔(dān)心,今天小編就為大家分享FreeBSD添加硬盤的方法,希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-04-06
- 今天小編為大家?guī)淼氖荈reebsd PF 安裝使用詳解,希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-04-06
FreeBSD下zfs: failed with error 6錯(cuò)誤如何解決?
最近一些朋友問小編 FreeBSD下zfs: failed with error 6錯(cuò)誤如何解決?今天小編要為大家?guī)淼氖?FreeBSD下zfs: failed with error 6錯(cuò)誤的解決方法,有需要的朋友一起去看2017-04-06Unix文件系統(tǒng)和pwd命令實(shí)現(xiàn)詳解
今天小編要為大家?guī)淼氖荱nix文件系統(tǒng)和pwd命令實(shí)現(xiàn)詳解,希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-04-01- 今天小編將為大家?guī)淼氖荱nix中的dot命令詳解!希望對(duì)大家會(huì)有幫助!有需要的朋友一起去看看吧2017-03-22
freebsd時(shí)間設(shè)置小節(jié)詳解
近日!一些朋友對(duì)于freebsd時(shí)間設(shè)置小節(jié)存在疑慮!下面小編將為大家?guī)淼氖莊reebsd時(shí)間設(shè)置小節(jié)詳解!希望對(duì)大家會(huì)有幫助!有需要的朋友一起去看看吧2017-03-19- 今天小編要為大家?guī)淼氖莋rub2引導(dǎo)freebsd詳解!希望對(duì)大家會(huì)有幫助,有需要的朋友一起去看看吧2017-03-19
- 下面小編為大家?guī)淼氖荈reeBSD10安裝內(nèi)核源代碼方法講解!希望能夠幫助到大家!有需要的朋友一起去看看吧2017-03-19
FreeBSD下如何使GraphicsMagick支持中文字體?
最近一些朋友在問FreeBSD下如何使GraphicsMagick支持中文字體?今天小編為大家?guī)淼氖荈reeBSD下使GraphicsMagick支持中文字體的方法!有需要的朋友一起去看看吧2017-03-15