FREEBSD6.0 架设FTP 服务器

  发布时间:2008-09-08 18:48:40   作者:佚名   我要评论
FTP (File Transfer Protocol) 是常用的网络协议,主要的功能是用来传输档案,我们时常从 FTP 站台下载档案。本章将介绍如何使用 FreeBSD 架设 FTP 服务器,并说明各种 FTP 服务器的管理技巧。本章除了 FreeBSD 内附的 FTP 服务器软件外,并将介绍笔者开发的 SmbFTPD。

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

相关文章

  • Unix,BSD,Linux系统三者的区别小结

    这篇文章主要介绍了Unix,BSD,Linux系统三者的区别小结,需要的朋友可以参考下
    2023-05-03
  • FreeBSD如何添加硬盘?FreeBSD添加硬盘的方法

    一些朋友问小编FreeBSD如何添加硬盘?别担心,今天小编就为大家分享FreeBSD添加硬盘的方法,希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-04-06
  • Freebsd PF 安装使用详解

    今天小编为大家带来的是Freebsd PF 安装使用详解,希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-04-06
  • FreeBSD下zfs: failed with error 6错误如何解决?

    最近一些朋友问小编 FreeBSD下zfs: failed with error 6错误如何解决?今天小编要为大家带来的是 FreeBSD下zfs: failed with error 6错误的解决方法,有需要的朋友一起去看
    2017-04-06
  • Unix文件系统和pwd命令实现详解

    今天小编要为大家带来的是Unix文件系统和pwd命令实现详解,希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-04-01
  • Unix中的dot命令详解

    今天小编将为大家带来的是Unix中的dot命令详解!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-22
  • freebsd时间设置小节详解

    近日!一些朋友对于freebsd时间设置小节存在疑虑!下面小编将为大家带来的是freebsd时间设置小节详解!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-19
  • grub2引导freebsd详解

    今天小编要为大家带来的是grub2引导freebsd详解!希望对大家会有帮助,有需要的朋友一起去看看吧
    2017-03-19
  • FreeBSD10安装内核源代码方法讲解

    下面小编为大家带来的是FreeBSD10安装内核源代码方法讲解!希望能够帮助到大家!有需要的朋友一起去看看吧
    2017-03-19
  • FreeBSD下如何使GraphicsMagick支持中文字体?

    最近一些朋友在问FreeBSD下如何使GraphicsMagick支持中文字体?今天小编为大家带来的是FreeBSD下使GraphicsMagick支持中文字体的方法!有需要的朋友一起去看看吧
    2017-03-15

最新评论