首页 > 学院 > 网络通信 > 正文

通用线程:Samba简介第三部分

2019-11-04 20:10:25
字体:
来源:转载
供稿:网友

  使 Samba 运转起来:配置阶段
  
  Daniel Robbins
  总裁/CEO,Gentoo Technologies, Inc.
  
  内容:
  添加一些共享
  令人兴奋的共享
  共享主目录
  共享参数
  snb.conf 选项
  从 Samba 打印
  参考资料
  关于作者
  
  在上一篇文章中,Daniel Robbins 指导您完成第一次设置 Samba 的过程。现在应该配置 Samba 使它执行您希望它执行的所有操作了。
  
  这里有一个我们曾使用过的 smb.conf 清单:
  
  [global]
  
  # set YOURWORKGROUP to the name of your workgroup
  
  workgroup = YOURWORKGROUP
  security = user
  encrypt passWords = yes
  guest account = guest
  
  # enable *one* of the following two lines
  # enable the first line if you want to use an existing
  # WINS server on your subnet, otherwise, enable the
  # second.
  
  # wins server = ip address of WINS server
  # wins support = yes
  
  local master = yes
  os level = 99
  domain master = yes
  PReferred master = yes
  
  # optional security options. Customize for your site.
  
  # hosts allow = 192.168.1. 127.
  # interfaces = eth1
  
  [tmp]
  path=/tmp
  writeable=yes
  
  添加一些共享
  当这个 smb.conf 文件生效后,它所能做的就是通过创建一个名称为 /"tmp/" 的共享,来和 Windows 一起共享 /tmp 目录。这不够让人兴奋。让我们创建另一个更有用的共享。向 smb.conf 添加以下几行,然后重新启动 Samba。
  
  [FTP]
  path=/path/to/ftp/root
  writeable=no
  
  假如在 Samba 服务器上有 ftp 位置或某种文件归档,那么可以通过使用类似的代码来在网络上共享数据。/"writeable=no/" 参数告诉 Samba 不答应任何人创建或修改该共享上的文件。任何具有有效 Samba 帐户的人都能够访问这个共享。
  
  令人兴奋的共享
  我知道您现在在想什么。但这仍不够让人兴奋。假如共享主目录呢?下面是实现如何这个目的的代码:
  
  [drobbins]
  comment=Home Directory for drobbins
  path = /home/drobbins
  force user = drobbins
  read only = no
  valid users = drobbins administrator
  
  这一个有趣得多。向 smb.conf 添加类似的代码可以让您共享主目录。在该例中,创建了 /"drobbins/" 共享。它在网络上共享了 /home/drobbins 的内容。幸运的是,有了 /"valid users/" 那一行,并不是所有人都能访问这个共享。这行导致 Samba 拒绝除 /"drobbins/" 或 /"administrator/" 帐户之外任何人进行的访问。因为使用的是 Windows NT,所以我经常作为 administrator 登录。在这种情况下,仍能访问 /"drobbins/" 共享。这一行 valid users 就可以答应这种情况发生。
  
  您还会注重到 /"read only/" 参数的使用。您可能已猜到,/"read only/" 与 /"writeable/" 参数相反。我们只需要用 /"writeable=yes/" 就能替代这一行。这表示只要有合适的许可权,Samba 就答应写入这个特定的共享。因为 Samba 的 /"drobbins/" 用户直接映射成 Unix 的 /"drobbins/" 用户,并且 drobbins 恰巧又是 /home/drobbins 目录及其内容的所有者,所以就答应写和修改文件。
  
  您是否曾作为 root 用户在主目录中创建文件,然后在作为一般用户登录后尝试修改它时被拒绝了写访问呢?对我来说,这种情况一直发生。要解决问题,需要执行 /"su/"、 /"chown drobbins.drobbins filename/",然后从 root 用户中 /"exit/" (退出)。最后终于答应我修改该文件。
  
  我提到这一点是因为在您共享主目录并使用其它 Samba 用户访问它们时也可能产生类似的问题。请考虑以下情况。我作为 administrator 访问共享并创建了文件。通常,这个文件是由 administrator 拥有的,不能由 drobbins 用户修改。假如 drobbins 尝试修改它,访问就遭到拒绝。幸运的是,Samba 具有避免这种情况的 /"force user/" 选项。/"force user/" 选项将使所有对文件(在特定的 Samba SMB/CIFS 共享上)执行的操作将使用单一 Unix 帐户来执行。在 /"drobbins/" 共享示例中,这意味着 administrator 创建的所有文件实际上都由 drobbins 拥有,防止任何所有权冲突。因为 /"drobbins/" 共享包含了主目录的内容,我希望将 drobbins 帐户拥有的所有内容都保存在其中。
  
  在开始下一个主题之前,我应该提一下 /"comment/" 参数。这答应您用从 Windows 可见的描述性注释来补充说明您的共享。
  
  共享许多主目录
  我们已介绍了如何共享单个主目录了。但假如恰巧您要治理包含几百个用户的服务器,而所有用户都希望能从 Windows 访问他们的主目录,在这种情况下您怎么做呢?很幸运,Samba 有一个非凡的共享,称为 /"homes/",专门用于这个目的。这里说明它是如何工作的:
  
  [homes]
  comment=Home directory for %S
  path=/home/%u
  valid users = %u administrator
  force user=%u
  writeable = yes
  browseable = no
  
  我提到过,这是一个“非凡”的共享。它与一般共享的工作原理不一样。Samba 能够熟悉这种非凡的标识 /"[homes]/" 并用不同的方式处理这个共享。
  
  这个共享最不同平常的地方是使用了 /"browseable=no/" 参数。这种非凡的选项使共享在“网络邻居”下不可见,它通常用于阻止那些想要“探索”它所能看到的所有共享的存心不良的用户。但为什么在这里使用它呢?
  
  答案有些耐人寻味。您看,/"homes/" 共享确实创建了一个名为 /"homes/" 的共享。但这个特定的共享对我们一点用处没有。它不做任何事,所以我们把它隐藏起来。/"homes/" 共享所做的事非常多。它告诉 Samba 自动为每个个人用户即时创建主目录。例如,假设我们的 /"drobbins/" 共享没有在 smb.conf 中定义,而我们作为 NT 用户 /"drobbins/" 浏览“网络邻居”。就会发现一个名为 /"drobbins/" 的共享,它的行为与原始 /"drobbins/" 共享的行为相同。假如使用 NT 用户 /"jimmy/" 访问 Samba,就会发现一个配置完善的 /"jimmy/" 共享。这是 homes 的魅力所在。添加一个非凡的共享会相应地创建所有主目录共享。
  
  现在,它的工作原理呢?当设置 /"homes/" 共享时,Samba 将检测哪个 NT 用户在访问 Samba。然后,它将创建一个已经为这个特定用户定制过的主目录共享。好象这个共享是个正常的非动态共享一样,它将出现在“网络邻居”中。而 NT 用户并没有意识到这个特定的共享是提前创建的。让我们看看每个特定选项是做什么的:
  
  comment 参数使用 %S 通配符,它可以扩展成实际的共享名。这将导致 /"drobbins/" 共享带有注释 /"Home directory for drobbins/",/"jimmy/" 共享带有注释 /"Home directory for jimmy/" 等等。path 参数还包含通配符 %u。%u 扩展成访问共享的用户名。在非凡情况下,%u 等价于 %S,因此我们就使用 path=/home/%S 代替。它可以让 Samba 动态地将共享映射到磁盘上的正确位置。
  
  我们再次使用 /"valid users=/" 那一行中的宏,以便只答应共享的所有者和治理员访问它。/"force user/" 也使用一个宏,以便所有文件访问将由一个帐户执行。当然,我们会使共享对所有已认证的用户可写。当使用 /"browseable=no/" 参数时,动态创建的共享在创建它们时将是可浏览的。当然,它只隐藏不起作用的 /"homes/" 共享。
  
  共享参数
  我们已经看过一些在创建共享时使用的一些方便技术。在这一节中,我将介绍一些常用的选项,可以让您根据每个共享定制 Samba 功能。也可以把所有与共享相关的选项放在 [globals] 这一节中,从而为所有共享设置缺省值。
  
  comment=
  comment = 参数是非常方便的选项,可以使 Samba 系统从 Windows 方查看时更正规。它可以让您指定特定共享所带的注释,描述共享的内容。指定注释时(非凡在使用 /"homes/" 时),我经常使用 %S 宏,它扩展成共享的名称。
  
  path=
  path= 是最基本的 Samba 共享参数之一。它让您将路径设置成要导出的目录。请注重,缺省情况下,该目录树中的任何符号链接都会跟随。因此用户有可能“跳出”目录树。从 Windows 方,它们没有跟随符号链接的指示。它将只作为普通的文件或目录出现。我们将讨论一些参数,它们可以更改这种行为使符号链接更安全。
  
  force user=
  force user= 是我最喜欢用的参数之一。它强制所有文件修改都由单一用户帐户执行。通常需要和 valid users= 选项一起使用它来限制对某些用户的访问。因为所有文件操作都是使用单一用户帐户执行的,所以 force-user= 的一个副作用是您无法通过查看 Unix 文件权限知道谁做了什么。因此对于可写的共享,force user= 选项应该带有适当的安全性缺省值。没有这个选项,所有文件操作就将由正在访问共享的 Samba 用户执行。
  
  force user 示例
  force user=drobbins
  
  browseable=
  一种增强安全性的简单方法是使特定共享不可见。缺省情况下,共享在“网络邻居”中是可浏览的。使它们不可见可以帮助阻止不希望的黑客攻击。但不应该将它用作安全性的唯一方法。只是因为共享不列在浏览列表中并不能防止从 Windows 访问它。它只能减少您可能提供给不怀好意用户的信


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表