twbsd.org
 
  Select Language: Home  SmbFTPD Forum 

SmbFTPD

簡介

文件

下載


SmbFTPD

SmbFTPD 使用手冊

上一頁
安裝
  下一頁
虛擬使用者

第三章 smbftpd.conf

內容列表

系統區段

選項名稱: ServerName

語法:

ServerName "Server Name"

說明:

這個選項可以用來定義您的伺服器名稱,當使用者登入後將看到:

Connected to localhost.com.
220 Server Name FTP server (SmbFTPD Ver 0.9) ready.
Name (localhost:alex):

如果您沒有設定 ServerName,則 SmbFTPD 將顯示系統的 Hostname。

預設值:

無 (系統的 Hostname)


選項名稱: ShowProgramVersion

語法:

ShowProgramVersion Yes|No

說明:

這個選項可以用來設定是否要顯示 SmbFTPD 的版本資訊,則設為 No,則不會顯示。

Connected to localhost.com.
220 Server Name FTP server (SmbFTPD Ver 2.0) ready.
Name (localhost:alex):

如果您沒有設定 ShowProgramVersion,則 SmbFTPD 預設將顯示版本資訊。

預設值:

ShowProgramVersion    Yes


選項名稱: ListenOnAddress

語法:

ListenOnAddress 192.168.0.1

說明:

當使用 -D 模式 (standalone) 啟動 FTP 時,您可以指定只接受連到這個位址的連線。例如,假設您有二張網路卡,一個 IP 是 172.16.1.1,另一個是 61.62.63.64,您可以設定 ListenOnAddress 172.16.1.1 以表示只接受連到這個 IP 的連線。

如果您要接受所有連線,則請移除這個選項。

預設值:

無 (接受所有連線)


選項名稱: Port

語法:

Port prot_num|service

說明:

當使用 -D 模式 (standalone) 啟動 FTP 時,您可以指定 SmbFTPD 所要使用的 Port。一般的 FTP port 為 21,您也可以使用 ftp 這個字串表示,系統會自動去 /etc/service 中查到相對的 port。

預設值:

Port ftp


選項名稱: Umask

語法:

Umask umask

說明:

當使用者建立檔案或目錄時,所要使用的 umask。例如,您想要讓使用者新增檔案時的權限為 644,則設 umask 為 022。詳細關於 umask 的設定請 man 2 umask。這個選項的值必須為 8 進位的數字,如 022、027 等。

預設值:

Umask 022


選項名稱: PidFile

語法:

PidFile /some/where/file

說明:

這是您要存放 smbftpd pid 檔的地方,當使用 daemon 模式時,我們會將 smbftpd 的 process id 寫到這個檔案中。

預設值:

無 (不寫 pid)


選項名稱: DebugMode

語法:

DebugMode Yes|No

說明:

是否要用 syslog 記錄更多除錯用的訊息。

預設值:

DebugMode No


選項名稱: LogCommand

語法:

LogCommand Yes|No

說明:

是否要使用 syslog 的 LOG_FTP 記錄使用者執行過的 FTP 指令。如果您將這個指令設為 Yes, 則使用者所執行的 retrieve(get)、store(put)、append、delete、mkdir、rmdir、rename 等都會被選錄下來,並用記錄該指令的檔名參數。在 FreeBSD 中,syslogd 會將這些記錄在 /var/log/xferlog 中。

預設值:

LogCommand No


選項名稱: DoWtmpLog

語法:

DoWtmpLog Yes|No

說明:

是否要將 ftp 使用者登入記錄寫在 /var/log/wtmp 中。

預設值:

DoWtmpLog No


選項名稱: DisableEPSV

語法:

DisableEPSV Yes|No

說明:

是否要停用 EPSV 這個指令。如果您的伺服器位於一些舊的防火牆後面,而一直無法連線,您可以設著停用 EPSV。

預設值:

DisableEPSV No


選項名稱: RestrictedPorts

語法:

RestrictedPorts Yes|No

說明:

檔這個選項設為 No 時,smbftpd 將不檢查限制使用者使用的連結埠。我們預設限制使用者在使用 PORT 命令時,只能使用 unprivileged ports (> 1024),不過這樣將違反 FTP protocol。

預設值:

RestrictedPorts Yes


選項名稱: PassiveModePortRange

語法:

PassiveModePortRange    low-high

說明:

您可以設定 SmbFTPD 在 Passive Mode 下所要使用的連接埠範圍。如果您的 FTP 伺服器位於 NAT 後,您可以在 router 上設定將這裡所設定的連接埠範圍也轉到內部來。

假設您要使用 Port 40000 到 Port 50000,您可以設定:

PassiveModePortRange    40000-50000

請注意連接埠範圍應該介於 1024 到 65535 之間。

預設值:


使用者登入控制

選項名稱: MaxConnection

語法:

MaxConnection number

說明:

這個選項可以讓您控制最多同時連線的數量。如果 MaxConnection 大於 0,則在連線數目到達您所設定的值時,使用者就無法再登入。如果值為 0,則表示不做任何限制。

預設值:

MaxConnection 0


選項名稱: MaxConnectionPerIP

語法:

MaxConnectionPerIP number

說明:

這個選項可以讓您控制每一個連線來源 IP 最多同時連線的數量。如果值為 0,則表示不做任何限制。如果您要使用這個設定,您必須先設定 MaxConnection。

但不建議您將這個值設為小於 2,因為許多 FTP client 都會同時開二個以上的連線。

預設值:

MaxConnectionPerIP 0


選項名稱: VirtualUserMapping

語法:

VirtualUserMapping    username

說明:

如果您不希望使用真實的使用者登入 FTP,您可以設定讓每一個登入的使用者都對映到同一個真實使用者。首先,您必須設定虛擬使用者的認證方式 (設定 VirtualUserAuthMethod),接著設定 VirtualUserMapping 以指定要將虛擬使用者對映到什麼身份。如此一來,虛擬使用者所建立的檔案,或是在 Unix 檔案系統上的存取權限全部都會變成這個選項所設定的使用者身份。

例如,您要使用 MySQL 進行身份認證,並將登入的使用者都對映到 ftp 這個真實使用者:

VirtualUserMapping    ftp

請注意,您如果有設定 VirtualUserMapping,您也必須設定 VirtualUserAuthMethod 及 VirtualUserAuthConfig。

預設值:


選項名稱: VirtualUserAuthMethod

語法:

VirtualUserAuthMethod    mysql|pgsql|text

說明:

設定虛擬使用者的認證方式,您可以使用 MySQL、PostgreSQL、或是純文字檔存放虛擬使用者的資料 (帳號、密碼、群組、家目錄)。

預設值:


選項名稱: VirtualUserAuthConfig

語法:

VirtualUserAuthConfig    /path/to/the/VirtualUserAuthMethod.conf

說明:

設定 VirtualUserAuthMethod 中所使用者認證方式的設定檔所在路徑。例如,如果使用 MySQL:

VirtualUserAuthConfig    /usr/local/etc/smbftpd/smbftpd_mysql.conf

如果使用 PostgreSQL:

VirtualUserAuthConfig    /usr/local/etc/smbftpd/smbftpd_pgsql.conf

如果使用純文字檔:

VirtualUserAuthConfig    /usr/local/etc/smbftpd/smbftpd_user.conf

如果您要使用純文字檔,您可以使用 smbftpd-user 這個指令來建立/編輯/刪除使用者。

預設值:


選項名稱: RequireValidShell

語法:

RequireValidShell Yes|No

說明:

當 RequireValidShell 為 Yes 時,使用者必須有合法的 shell 才可以登入。合法的 shell 是以 getusershell(3) 這個函數取得,大多數的作業系統中,合法的 shell 都被定義在 /etc/shells 中。

預設值:

RequireValidShell No


選項名稱: EmptyPasswdLogin

語法:

EmptyPasswdLogin Yes|No

說明:

是否允許空密碼的使用者登入。

預設值:

EmptyPasswdLogin No


選項名稱: NoLoginList

語法:

NoLoginList MinUID
NoLoginList /path/to/no_login_ftp_users
NoLoginList user1,user2,@group1,@group2

說明:

設定您不想讓其登入的使用者,在 NoLoginList 中的使用者或群組不可以登入。

NoLoginList 的參數可以是一個檔案、最小的 UID、或是一個使用者及群組名單。

  • 如果是使用者或是群組,如果是設定群組,請在群組名稱前加上 @。當要設定多個使用者或群組時,請使用逗號 , 分開。
  • 如果是數字,則視為可以登入的最小 UID,如果使用者 UID < MiniUID,則不允許登入。
  • 如果設定的值是以 / 為開頭的檔案絕對路徑,則使用檔案中的使用者群組設定。

如果您使用檔案,檔案中列出的每一行都分別為一個使用者或群組。例如,您可以建立 /etc/ftpusers,檔案內容如下:

user1
user2
@group1
@group2

預設值:

NoLoginList 500


選項名稱: TimeOut

語法:

TimeOut seconds

說明:

當使用者超過這個時間沒有任何動作時,則中斷連線。單位為秒。

預設值:

TimeOut 900


選項名稱: MaxTimeOut

語法:

MaxTimeOut seconds

說明:

使用者可以自行設定 timeout 的時間,但我們可以在這裡設定最長 timeout 的時間。預設是 2 小時。

預設值:

MaxTimeOut 7200


FTP 目錄權限控制

選項名稱: DefaultMode

語法:

DefaultMode SMB|Normal

說明:

SmbFTPD 有二種模式,一個是 SMB mode,另一個是 Normal mode。在 SMB 模式中,SmbFTPD 會使用類似 Samba 的共用資料夾權限設定,系統會讀取 ShareConfPath 中的使用者目錄權限控制來設定他對於資料夾的存取權限。而 Normal 模式中,SmbFTPD 就像一般 FTP Daemon 一樣。

預設值:

DefaultMode Normal


選項名稱: ExceptionList

語法:

ExceptionList user1,user2,@group1,@group2

說明:

您可以在 ExceptionList 中設定不要使用 DefaultMode 的使用者及群組。例如,您如果希望所有人都使用 SMB 模式,但群組 wheel 要使用一般模式,則請將 DefaultMode 設為 SMB,再在 ExceptionList 中設定 @wheel 即可。

ExceptionList 的參數可以是使用者或群組,如果是群組的話,請在群組名稱前加上 @。例如:

ExceptionList user1,user2,@group1,@group2

預設值:


選項名稱: ShareConfPath

語法:

ShareConfPath /some/where/smbftpd_share.conf

說明:

設定資料夾設定的 smbftpd_share.conf 所在路徑。如果您設定 DefaultMode 為 SMB,或是 DefaultMode 為 Normal 但有 ExceptionList,則一定要指定 smbftpd_share.conf 的所在路徑。

我們會檢查 smbftpd_share.conf 中的下列關鍵設定:

  • path:資料夾的路徑。
  • rw:可以有寫入權限的使用者或群組。
  • ro:可以有唯讀權限的使用者或群組。
  • browseable:資料夾是否要設為隱藏。若設為 no,則使用者在根目錄 ls 時,將看不到該資料夾,但依然可以 cd 到該資料夾中。
  • disable_download:設定不可以下載的使用者。若使用者可以讀取該資料夾內容,您還可以設定讓它無法執行下載的動作。
  • disable_ls:設定在資料夾中執行 ls 時,不可以看到資料夾內容的使用者及群組。
  • disable_modify:設定不可以修改該資料夾中的檔案或目錄的使用者及群組。如果該使用者具有讀寫的權限,但又在此列表中,則該使用者只能上傳檔案或是建立新的目錄,而無法執行 rename、delete、rmdir、chmod 等指令。

範例一:

這個範例是有一個資料夾名為 public,其所在目錄為 /home/public,在 samba 群組中的使用者可以有唯讀的權限,而 root 可以有寫入的權限。

[public]
	path = /home/public
	rw = root
	ro = @samba

範例二:

資料夾名稱為 private,只有 wheel 群組的人可以寫入,而且這個資料夾是隱藏的,wheel 群組的人登入後使用 ls 看不到這個資料夾,但是可以 cd 進去資料夾中。

[private]
	path = /root/ftp
	rw = @wheel
	browseable = no

範例三:

資料夾名稱為 upload, 使用者「ftp」及「anonymous」只能上傳檔案或建立新目錄,但是無法看到該資料夾中的內容,也不可以下載或是修改現有的檔案。但在使用者「wheel」群組中的使用者可以具有全部的讀寫權限。

[upload]
	path=/home/upload"
	rw=ftp,@wheel
	disable_ls=ftp
	disable_modify=ftp
	disable_download=ftp

請注意,匿名使用者「ftp」及「anonumous」會被對映到真實的使用者「ftp」,如果您要設定的是匿名的使用者「ftp」及「anonymous」,請使用「ftp」這個使用者。

如果您設定某個使用者對於某個資料夾有寫入的權限,但該使用者卻無法寫入,因為除了 SmbFTPD 的權限控制外,您還必須對資料夾的 UNIX 權限做一些設定,讓該資料夾的 UNIX 權限允許該使用者寫入。

預設值:


選項名稱: ChrootSet

語法:

ChrootSet user path

ChrootSet @group path

ChrootSet @ path

說明:

在這個列表中的使用者或群組會被 chroot 到您所指定的路徑中,也就是讓它將您所設定的路徑做為根目錄,使用者無法到該路徑以外的地方。如果有需要,您可以同時設定多條 ChrootSet 的規則。

這個參數的第一個欄位是使用者名稱或群組,如果在名稱之前加上 @,表示是群組,所有在該群組中的使用者都會被套用到群組的設定中。而另一個特別的用法是只有一個 @ 符號,表示所有使用者都會被套用到這個設定中。

請注意,被設定為 chroot 的使用者就算 DefaultMode 被歸類為 SMB mdoe 也一定會被強制使用 Normal mode。

這裡有幾個設定的範例:

範例一:

使用者 anonymous 登入時,將它 chroot 到 /var/spool/ftp

ChrootSet anonymous /var/spool/ftp

範例二:

所有群組為 ftpgroup 的使用者都使用他們的家目錄 (home) 做為根目錄。例如,使用者 alex 的家目錄為 /home/alex,則其根目錄為 /home/alex,而 jack 則是 /home/jack。我們以 ~ 符號表示家目錄,系統會自動轉換為真正的路徑。

ChrootSet @ftpgroup ~

範例三:

所有 webusers 這個群組的人都以其家目錄下的 public_html 為根目錄。這對於您要開放 FTP 給某些使用者,但又不想讓他們去存取系統中其它路徑時十分有用。

ChrootSet @webusers ~/public_html

範例四:

所有使用者都必須以其家目錄為根目錄。

ChrootSet @ ~

預設值:


選項名稱: ShowSymlinks

語法:

ShowSymlinks Yes|No

說明:

當 ShowSymlinks 為 No ,我們在使用者 ls 時不會列出 symbolic link 的檔案或目錄。

預設值:

ShowSymlinks No


選項名稱: ShowDotFiles

語法:

ShowDotFiles Yes|No

說明:

是否要顯示檔案或目錄名稱開頭為 "." 的檔案。

預設值:

ShowDotFiles Yes


選項名稱: SupportUTF8Client

語法:

SupportUTF8Client Yes|No

說明:

是否支援 UTF-8 的客所端連線。傳統的 FTP 是使用 codepage 來傳輸檔案,所以檔名同時不能出現各國語言。RFC 2640 開如支援 UTF-8 的 FTP client。

如果您將 SupportUTF8Client 設為 Yes,我們會判斷 client 及本地檔案系統來決定是否要進行 codepage 和 UTF-8 的轉換。所以,您必須再設定 CharsetEncoding,我們會使用 CharsetEncoding 來做為轉換的依據。

預設值:

SupportUTF8Client No


選項名稱: UsingUTF8FileSystem

語法:

UsingUTF8FileSystem Yes|No

說明:

本地所使用的檔案名稱是否為 UTF-8。如果檔案名稱是 UTF-8,當 client 使用非 UTF-8 連線時,我們會使用 CharsetEncoding 的設定來將檔名轉成 UTF-8。反之,如果檔案系統不是 UTF-8,但 client 是 UTF-8,我們則會將檔名轉為非 UTF-8。

請注意,如果您使用 UTF-8 的檔案系統,則 smbftpd_share.conf 內容也必須是 UTF-8。

預設值:

UsingUTF8FileSystem No


選項名稱: CharsetEncoding

語法:

CharsetEncoding encoding

說明:

在進行 codepage 轉換成 UTF-8 時,要使用何種編碼進行轉換。

這裡有幾個編碼建議:

  • 如果您使用英文、法文、德文、義大利文、西班牙文、葡萄牙文、丹麥文、挪威文、瑞典語、荷蘭文、或是其它的西歐語系,請設為 CP1252。
  • 如果您使用繁體中文,請設為 CP950。
  • 如果您使用簡體中文,請設為 CP936。
  • 如果您使用俄羅斯語,請設為 CP1251。
  • 如果您使用日本語,請設為 CP932。
  • 如果您使用韓文,請設為 CP949。
  • 如果您使用希臘文,請設為 CP1253。
  • 如果您使用捷克文,請設為 CP1250。

您可以在這裡找到更多可能的設定值:http://www.gnu.org/software/libiconv/

另外,這是 MS Windows 編碼設定:http://msdn2.microsoft.com/en-us/library/ms903928.aspx

預設值:


匿名使用者控制

選項名稱: AnonymousLogin

語法:

AnonymousLogin Yes|No

說明:

是否允許匿名使用者登入。匿名的使用者帳號為 ftp 或 anonymous。如果您要允許匿名使用者登入,您必須先新增一個 ftp 的系統使用者。

預設值:

AnonymousLogin No


選項名稱: AnonymousOnly

語法:

AnonymousOnly Yes|No

說明:

是否只允許匿名使用者登入。

預設值:

AnonymousOnly No


選項名稱: AnonymousReadOnly

語法:

AnonymousReadOnly Yes|No

說明:

當匿名使用者登入時,進入唯讀模式,不允許匿名使用者進行會變更檔案系統的指令。

預設值:

AnonymousReadOnly No


檔案傳輸控制

選項名稱: TransferLog

語法:

TransferLog /var/run/smbftpd.log

說明:

這個選項用來設定使用者上傳及下載的檔案記錄。您可以設定當使用者下載或上傳檔案時,將它所上傳或下載的檔名、傳輸時間、大小等資料寫在這個檔案中。

預設值:

無記錄


選項名稱: MaxDownloadRate

語法:

MaxDownloadRate @grou|user rate

說明:

您可以針對使用者及群組設定最大的下載頻寬。頻寬 rate 的單為是 KB/s。您也可以設定多條 MaxDownloadRate 規則。

這個選項的第一個參數可以是使用者或群組,如果是群組,則名稱開頭必須加上 @。而若只有一個 @ 符號,表示所有使用者都要套用到該規則。例如:

MaxDownloadRate @group100 100
MaxDownloadRate anonymous 20
MaxDownloadRate @friends 1000

預設值:

無限制


選項名稱: MaxUploadRate

語法:

MaxUploadRate @grou|user rate

說明:

您可以針對使用者及群組設定最大的上傳頻寬。頻寬 rate 的單為是 KB/s。您也可以設定多條 MaxDownloadRate 規則。

這個選項的第一個參數可以是使用者或群組,如果是群組,則名稱開頭必須加上 @。而若只有一個 @ 符號,表示所有使用者都要套用到該規則。例如:

MaxUploadRate @group100 100
MaxUploadRate anonymous 20
MaxUploadRate @friends 1000

預設值:

無限制


SSL/TLS 控制

選項名稱: SecurityPolicy

語法:

SecurityPolicy secure|nosecure|both

說明:

這個選項可以讓您設定是否要啟用 SSL/TLS 加密。您可以 強制一定要使用加密連線,或是關閉加密功能,或是同時允許加密及非加密模式。各種模式的說明如下:

  • secure:只允許加密連線。
  • nosecure:只允許非加密連線。
  • both:同時允許加密及非加密連線。

預設值是同時允許加密及非加密連線。

預設值:

SecurityPolicy nosecure


選項名稱: EncryptionType

語法:

EncryptionType tls|ssl|both

說明:

當您要使用加密連線時,您可以選擇要支援哪一種加密模式。SmbFTPD 支援二種模式:SSL 及 TLS,您可以使用下列設定值以選擇要使用另一種模式:

  • TLS:只使用 RFC 2228 所定義的 FTP-TLS 模式。
  • SSL:只支援 FTP-SSL 模式。
  • Both:同時支援 SSL 及 TLS。

預設值是同時支援 SSL 及 TLS。

預設值:

EncryptionType both


選項名稱: NormalUserMustSecure

語法:

NormalUserMustSecure Yes|No

說明:

當 NormalUserMustSecure 設為「Yes」時,表示一般使用者登入時一定要使用加密的連線,否則無法登入。

我們在 FTP 服務中使用 SSL/TLS 的目的是為了避免使用者的機密資料在網路上以明碼流傳,為了強制所有使用者都使用比較安全的模式連線,您可以將這個選項設為「Yes」。

預設值:

NormalUserMustSecure No


選項名稱: AnonymDisableSecure

語法:

AnonymDisableSecure Yes|No

說明:

當 AnonymDisableSecure 設為「Yes」時,系統將不允許匿名的使用者使用加密的連線。

既然 SSL/TLS 的目的是避免使用者資料在網路上流傳,而匿名使用者是任何人都可以使用,保護匿名使用者的資料似乎比較不需要。所以您可以將這個選項設為「No」,以避免匿名使用者也使用加密連線登入,徒然耗費 CPU 的資源。

預設值:

AnonymDisableSecure No


選項名稱: SSLCertFile

語法:

SSLCertFile /path/to/server.crt

說明:

設定所要使用的憑證,這個憑證會被送到客戶端做為加密用。如果您沒有設定這個選項,預設會使用 /usr/local/etc/smbftpd/ssl.crt/server.crt。

您也可以和 Apache+SSL 共用憑證,Apache 的 SSL 憑證通常位於 /usr/local/apache/conf/ssl.crt/server.crt。

預設值:

SSLCertFile /usr/local/etc/smbftpd/ssl.crt/server.crt


選項名稱: SSLKeyFile

語法:

SSLKeyFile /path/to/server.key

說明:

這個選項是用來設定您上述設定的憑證所對映的 private key。這個 private key 和憑證是成對的,預設是在 /usr/local/etc/smbftpd/ssl.key/server.key。

如果您使用 Apache SSL 憑證,則這裡也必須設定使用 Apache 的 key,通常位於 /usr/local/apache/conf/ssl.key/server.key。

預設值:

SSLKeyFile /usr/local/etc/smbftpd/ssl.key/server.key


選項名稱: SSLCACertFile

語法:

SSLCACertFile /path/to/ca-bundle.crt

說明:

這個選項是用來設定您上述設定中繼憑證。用途和 Apache 設定的 SSLCACertificateFile 一樣。

預設值:


選項名稱: SSLCipherSuite

語法:

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

說明:

這個選項是用來設定所支援的加密演算法。您可以參考 Apache 的設定說明。

預設值:

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5


上一頁
安裝

索引
您可以在 http://www.twbsd.org 取得本文件

下一頁
虛擬使用者

Copyright © 2002-2019 Alex Wang from www.twbsd.org. All rights reserved.