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、或是一个使用者及群组名单。

如果您使用档案,档案中列出的每一行都分别为一个使用者或群组。例如,您可以建立 /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 中的下列关键设定:

范例一:

这个范例是有一个数据夹名为 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 时,要使用何种编码进行转换。

这里有几个编码建议:

您可以在这里找到更多可能的设定值: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 加密。您可以 强制一定要使用加密联机,或是关闭加密功能,或是同时允许加密及非加密模式。各种模式的说明如下:

默认值是同时允许加密及非加密联机。

默认值:

SecurityPolicy nosecure


选项名称: EncryptionType

语法:

EncryptionType tls|ssl|both

说明:

当您要使用加密联机时,您可以选择要支持哪一种加密模式。SmbFTPD 支持二种模式: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


上一页
安装

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

下一页
虚拟使用者