nologinlist 的参数可以是使用者或是群组,如果是设定群组,请在群组名称前加上 @。当要设定多个使用者或群组时,请使用逗号 , 分开。 匿名使用者「ftp」及「anonumous」会被对映到真实的使用者「ftp」,如果您要设定的是匿名的使用者「ftp」及「anonymous」,请使用「ftp」这个使用者。
例如:
nologinlist user1,@group1,user2
表示不允许使用者 user1, user2 及群组 group1 登入。
nologinlist user1,user2,@group1,@group2 |
timeout 设定联机逾时秒数
当使用者超过这个时间没有任何动作时,则中断联机。单位为秒。
timeout 900 |
maxtimeout 设定最大联机逾时秒数
使用者可以自行设定 timeout 的时间,但我们可以在这里设定最长 timeout 的时间。预设是 2 小时。
maxtimeout 7200 |
15.7.3 ftp 目录权限控制
defaultmode 预设的权限控制模式
smbftpd 有二种模式,一个是 smb mode,另一个是 normal mode。在 smb 模式中,smbftpd 会使用类似 samba 的共享数据夹权限设定,系统会读取 shareconfpath 中的使用者目录权限控制来设定他对于数据夹的存取权限。而 normal 模式中,smbftpd 就像一般 ftp daemon 一样。
这个选项的值可以是 normal 或 smb,预设为 normal。
defaultmode normal |
exceptionlist 设定不使用预设权限控制模式的使用者
您可以在 exceptionlist 中设定不要使用 defaultmode 的使用者及群组。例如,您如果希望所有人都使用 smb 模式,但群组 wheel 要使用一般模式,则请将 defaultmode 设为 smb,再在 exceptionlist 中设定 @wheel 即可。
exceptionlist 的参数可以是使用者或群组,如果是群组的话,请在群组名称前加上 @。例如:
exceptionlist user1,user2,@group1,@group2 |
shareconfpath 设定数据夹权限设定文件位置
设定数据夹设定的 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 权限允许该使用者写入。
shareconfpath /some/where/smbftpd_share.conf |
chrootset 设定使用 chroot 的使用者
在这个列表中的使用者或群组会被 chroot 到您所指定的路径中,也就是让它将您所设定的路径做为根目录,使用者无法到该路径以外的地方。如果有需要,您可以同时设定多条 chrootset 的规则。
这个参数的第一个字段是使用者名称或群组,如果在名称之前加上 @,表示是群组,所有在该群组中的使用者都会被套用到群组的设定中。而另一个特别的用法是只有一个 @ 符号,表示所有使用者都会被套用到这个设定中。
请注意,被设定为 chroot 的使用者就算 defaultmode 被归类为 smb mdoe 也一定会被强制使用 normal mode。
这里有几个设定的范例:
范例一:
使用者 ftp 登入时,将它 chroot 到 /var/spool/ftp
chrootset ftp /var/spool/ftp
范例二:
所有群组为 ftpgroup 的使用者都使用他们的家目录 (home) 做为根目录。例如,使用者 alex 的家目录为 /home/alex,则其根目录为 /home/alex,而 jack 则是 /home/jack。我们以 ~ 符号表示家目录,系统会自动转换为真正的路径。
chrootset @ftpgroup ~
范例三:
所有 webusers 这个群组的人都以其家目录下的 public_html 为根目录。这对于您要开放 ftp 给某些使用者,但又不想让他们去存取系统中其它路径时十分有用。
chrootset @webusers ~/public_html
范例四:
所有使用者都必须以其家目录为根目录。
chrootset @ ~
chrootset @webusers ~/public_html chrootset @ ~ |
15.7.4 匿名使用者控制
anonymouslogin 是否支持匿名使用者登入
是否允许匿名使用者登入。匿名的使用者账号为 ftp 或 anonymous。如果您要允许匿名使用者登入,您必须先新增一个 ftp 的系统使用者。
这个选项的值可以是 yes 或 no,默认值为 no。
anonymouslogin no |
anonymousonly 是否只允许匿名使用者登入
是否只允许匿名使用者登入。若设为 yes,则一般使用者无法登入。
anonymousonly no |
15.7.5 档案传输控制
transferlog 设定上下传记录文件位置
这个选项用来设定使用者上传及下载的档案记录。您可以设定当使用者下载或上传档案时,将它所上传或下载的档名、传输时间、大小等数据写在这个档案中。
transferlog /var/run/smbftpd.log |
maxdownloadrate 设定最大下传速度
您可以针对使用者及群组设定最大的下载频宽。频宽 rate 的单为是 kb/s。您也可以设定多条 maxdownloadrate 规则。
这个选项的第一个参数可以是使用者或群组,如果是群组,则名称开头必须加上 @。而若只有一个 @ 符号,表示所有使用者都要套用到该规则。
maxdownloadrate @group100 100 maxdownloadrate ftp 20 maxdownloadrate @friends 1000 |
maxuploadrate 设定最大上传速度
您可以针对使用者及群组设定最大的上传频宽。频宽 rate 的单为是 kb/s。您也可以设定多条 maxdownloadrate 规则。
这个选项的第一个参数可以是使用者或群组,如果是群组,则名称开头必须加上 @。而若只有一个 @ 符号,表示所有使用者都要套用到该规则。
maxuploadrate @group100 100 maxuploadrate ftp 20 maxuploadrate @friends 1000 |
15.7.6 ssl/tls 控制
securitypolicy 设定是否使用 ssl/tls
这个选项可以让您设定是否要启用 ssl/tls 加密。您可以 强制一定要使用加密联机,或是关闭加密功能,或是同时允许加密及非加密模式。各种模式的说明如下:
- secure:只允许加密联机。
- nosecure:只允许非加密联机。
- both:同时允许加密及非加密联机。
您可以将 securitypolicy 设为 secure、nosecure、或 both,默认值是同时允许加密及非加密联机。
securitypolicy both |
encryptiontype 设定加密类型
当您要使用加密联机时,您可以选择要支持哪一种加密模式。smbftpd 支持二种模式:ssl 及 tls,您可以使用下列设定值以选择要使用另一种模式:
- tls:只使用 rfc 2228 所定义的 ftp-tls 模式。
- ssl:只支持 ftp-ssl 模式。
- both:同时支持 ssl 及 tls。
默认值是同时支持 ssl 及 tls。
encryptiontype both |
normalusermustsecure 强制一般使用者使用加密联机
当 normalusermustsecure 设为「yes」时,表示一般使用者登入时一定要使用加密的联机,否则无法登入。
我们在 ftp 服务中使用 ssl/tls 的目的是为了避免使用者的机密数据在网络上以明码流传,为了强制所有使用者都使用比较安全的模式联机,您可以将这个选项设为「yes」。
normalusermustsecure no |
anonymdisablesecure 设定不允许匿名使用者使用加密联机
当 anonymdisablesecure 设为「yes」时,系统将不允许匿名的使用者使用加密的联机。
既然 ssl/tls 的目的是避免使用者数据在网络上流传,而匿名使用者是任何人都可以使用,保护匿名使用者的数据似乎比较不需要。所以您可以将这个选项设为「no」,以避免匿名使用者也使用加密联机登入,徒然耗费 cpu 的资源。
anonymdisablesecure no |
sslcertfile 设定公开金钥位置
设定所要使用的凭证,这个凭证会被送到客户端做为加密用。如果您没有设定这个选项,预设会使用 /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 设定私密金钥位置
这个选项是用来设定您上述设定的凭证所对映的 private key。这个 private key 和凭证是成对的,预设是在 /usr/local/etc/smbftpd/ssl.key/server.key。
如果您使用 apache ssl 凭证,则这里也必须设定使用 apache 的 key,通常位于 /usr/local/etc/apache2/ssl.key/server.key。
sslkeyfile /usr/local/etc/smbftpd/ssl.key/server.key |
ssldebugmode 是否启用 ssl 的除错模式
设定是否要启动 ssl 的除错模式,当设为「yes」时,您还必须要设定记录文件位置 ssldebuglog。
ssldebugmode no |
ssldebuglog 设定除错记录文件位置
设定 ssl 除错模式的记录文件要放在什么地方。
ssldebuglog /var/log/smbftpd-ssl.log |
发表评论