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\" 共享时,S

投稿指南


