17.2. 配置 Samba 服务器

默认的配置文件(/etc/samba/smb.conf)允许用户作为 Samba 共享来查看他们的 Red Hat Linux 主目录。它还把为 Red Hat Linux 配置的打印机作为 Samba 共享打印机来共享。换一句话说,你可以在你的 Red Hat Linux 系统上连接打印机,然后从网络上的 Windows 机器来打印。

17.2.1. 图形化配置

要使用图形化界面来配置 Samba,使用 Samba 服务器配置工具。要使用命令行来配置,请跳到第 17.2.2 节

Samba 服务器配置工具是用来管理 Samba 共享、用户、以及基本服务器设置的图形化界面。它修改 /etc/samba/ 目录中的配置文件。没有使用该程序进行的改变都会被保留。

要使用该程序,你必须在运行 X 窗口系统,具备根特权,并且安装了 redhat-config-samba RPM 软件包。要从桌面启动 Samba 服务器配置工具,点击面板上的「主菜单」 => 「系统设置」 => 「服务器设置」 => 「Samba 服务器」,或在 shell 提示(如 XTerm 或 GNOME 终端)下键入 redhat-config-samba 命令。

图 17-1. Samba 服务器配置工具

注记注记
 

Samba 服务器配置工具不显示允许用户在 Samba 服务器上查看他们自己的主目录的共享打印机或默认文件段。

17.2.1.1. 配置服务器设置

配置 Samba 服务器的第一步是配置服务器的基本设置和几个安全选项。启动了应用程序后,选择 「首选项」 => 「服务器设置」「基本」活页标签如 图 17-2所示。

图 17-2. 配置基本服务器设置

「基本」标签上,指定计算机应在的工作组以及对计算机的简短描述。它们与 smb.conf 中的 workgroupserver string 选项相对应。

图 17-3. 配置安全服务器设置

「安全」标签包含以下选项:

  • 「验证模式」 — 它和 security 选项相对应。选择以下验证模式中的一种。

    • 「域」 — Samba 服务器依赖于 Windows NT 主要或备份域控制器来校验用户。服务器把用户名和口令传递给控制器,然后等待它们被返回。在「验证服务器」字段中指定主要或备份域控制器的 NetBIOS 名称。

      「加密口令」选项如果被选,它必须被设置为「是」

    • 「服务器」 — Samba 服务器试图通过把用户名和口令组合传递给另一个 Samba 服务器来校验它们。如果它无法校验,服务器会试图使用用户验证模式来校验它们。在「验证服务器」字段中指定另一个 Samba 服务器的 NetBIOS 名称。

    • 「共享」 — Samba 用户不必为每个 Samba 服务器都输入用户名和口令组合。它们在试图连接 Samba 服务器上的指定共享时才会被提示输入用户名和口令。

    • 「用户」 — (默认)Samba 用户必须为每个 Samba 服务器提供一个有效的用户名和口令。如果你想让「Windows 用户名」选项生效,选择这个选项。详情请参阅第 17.2.1.2 节

  • 「加密口令」 — (默认值为「是」)如果用户从 Windows 98、带有服务包的 Windows NT 4.0、或其它最近版本的 Microsoft Windows 中连接,该选项必须被启用。口令在服务器和客户间使用加密格式而非可被截取的纯文本格式传输。它和 encrypted passwords 选项相对应。关于加密 Samba 口令的详情,请参阅第 17.2.3 节

  • 「来宾账号」 — 当用户或来宾用户要登录入 Samba 服务器时,他们必须被映射到服务器上的有效用户。选择系统上的现存用户名之一作为来宾 Samba 账号。当用户使用来宾账号登录入 Samba 服务器,他们拥有和这个用户相同的特权。该选项和 guest account 选项相对应。

点击了「确定」后,所做改变会被写入配置文件,守护进程会被重新启动;因此改变会立即生效。

17.2.1.2. 管理 Samba 用户

Samba 服务器配置工具要求在添加 Samba 用户之前,在充当 Samba 服务器的 Red Hat Linux 系统上必须存在一个活跃的现存用户账号。Samba 用户和这个现存的 Red Hat Linux 用户账号相关联。

图 17-4. 管理 Samba 用户

要添加 Samba 用户,选择「首选项」 => 「Samba 用户」,然后点击「添加用户」按钮。在 「创建新 Samba 用户」窗口中的本地系统上的现存用户列表中选择「Unix 用户名」

如果用户在 Windows 机器上有一个不同的用户名,并将从 Windows 机器上登录入 Samba 服务器,请在「Windows 用户名」字段中指定 Windows 用户名。「服务器设置」首选项的「安全」活页上的「验证模式」 必须被设置为「用户」才能是这个选项生效。

你还需要为 Samba 用户配置一个「Samba 口令」,并再键入一次来确认这个口令。即便你选择了为 Samba 使用加密口令,仍建议你为所有用户设置的 Samba 口令不同于他们的 Red Hat Linux 系统口令。

要编辑某个现存用户,从列表中选择它,然后点击「编辑用户」。要删除某个现存的 Samba 用户,选择这个用户,然后点击「删除用户」按钮。删除 Samba 用户不会删除相关的 Red Hat Linux 用户账号。

点击了「确定」按钮后,用户就会被立即修改。

17.2.1.3. 添加共享

图 17-5. 添加共享

要添加共享,点击「添加」按钮。「基本」活页标签配置以下选项:

  • 「目录」 — 通过 Samba 共享的目录。这个目录必须存在。

  • 「描述」 — 对共享的简短描述。

  • 「基本权限」 — 用户应该只能够读取共享目录中的文件还是应该能够读写共享目录中的文件。

「访问」活页标签上,选择是否要只允许指定的用户来访问共享还是允许所有 Samba 用户来访问共享。如果你选择了要允许指定用户访问,从可用的 Samba 用户列表中选择这些用户。

点击了「确定」按钮后,共享就会立即被添加。

17.2.2. 命令行配置

Samba 使用 /etc/samba/smb.conf 作为它的配置文件。如果你改变了这个配置文件,这个改变直到你使用 service smb restart 命令重启 Samba 守护进程后才会生效。

要指定 Windows 工作组和对它的简短描述,编辑 smb.conf 文件中的以下几行:

workgroup = WORKGROUPNAME
server string = BRIEF COMMENT ABOUT SERVER

WORKGROUPNAME 换成你的机器所属的 Windows 工作组名。BRIEF COMMENT ABOUT SERVER 是可选的,它被用作关于 Samba 系统的 Windows 注释。

要在你的 Linux 系统上创建 Samba 共享目录,在 smb.conf 文件中添加以下几行(根据你和你的系统需要修改了该文件之后):

[sharename]
comment = Insert a comment here
path = /home/share/
valid users = tfox carole
public = no
writable = yes
printable = no
create mask = 0765

上面的例子允许用户 tfox 和 carole 从 Samba 客户中读写 Samba 服务器上的目录 /home/share

17.2.3. 加密口令

在 Red Hat Linux 9 中,加密口令被默认启用,因为它更安全。如果加密口令没有被使用,纯文本口令就会被使用,它能够被别人使用 网络分组嗅探器来截取。建议你使用加密口令。

Microsoft SMB 协议最初使用纯文本口令。然而,带有服务包 3 或更高的 Windows NT 4.0、Windows 98、Windows 2000、Windows ME、以及 Windows XP 要求加密的 Samba 口令。要在 Red Hat Linux 系统和运行以上 Windows 操作系统的系统间使用 Samba,你可以编辑 Windows 注册器来使用纯文本口令过配置你的 Linux 系统的 Samba 来使用加密口令。如果你选择要修改你的注册器,你必须为你的全部 Windows 机器这么做 — 这很冒险,有可能导致进一步的冲突。为了更高的安全性,推荐你使用加密口令。

要在你的 Red Hat Linux 系统上配置 Samba 使用加密口令,遵循以下步骤:

  1. 为 Samba 创建一个单独的口令文件。要根据你的现存 /etc/passwd 文件来创建,在 shell 提示下键入以下命令:

    cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    如果系统使用 NIS,键入以下命令:

    ypcat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    mksmbpasswd.sh 脚本和 samba 软件包一起被安装在你的 /usr/bin 目录上。

  2. 改变 Samba 口令文件的权限许可,因此只有根用户才有读写权限:

    chmod 600 /etc/samba/smbpasswd
  3. 这个脚本不会把用户口令复制到新文件,Samba 用户账号在没有设置口令之前不会被激活。为了更高的安全性,建议你把用户的 Samba 口令设置为不同于用户的 Red Hat Linux 口令的口令。要设置每个 Samba 用户的口令,使用以下命令(把 username 替换为每个用户的用户名):

    smbpasswd username 
  4. 加密口令必须在 Samba 配置文件中被启用。在 smb.conf 文件中,请确定以下行没有被注释掉:

    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
  5. 在 shell 提示下键入 service smb restart 来确定 smb 服务被启动。

  6. 如果你想让 smb 服务被自动启动,使用 ntsysvchkconfig、或 服务配置工具来在运行时间启用它。详情请参阅第14章

窍门窍门
 

阅读 /usr/share/doc/samba-<version>/docs/htmldocs/ENCRYPTION.html 来进一步了解有关加密口令的信息。(把 <version> 替换为你安装了的 Samba 版本号码)。

当使用了 passwd 命令后,pam_smbpass PAM 模块能够被用来同步用户的 Samba 口令和他们的系统口令。如果用户启用了 passwd 命令,他用来登录到 Red Hat Linux 系统的口令以及他要连接 Samba 共享所必须提供的口令就会被改变。

要启动这个功能,把以下行添加到 /etc/pam.d/system-auth 的启动 pam_cracklib.so 之下:

password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass

17.2.4. 启动和停止服务器

在通过 Samba 共享目录的服务器上必须运行 smb 服务。

使用以下命令来查看 Samba 守护进程的状态:

/sbin/service smb status

使用以下命令来启动守护进程:

/sbin/service smb start

使用以下命令来停止守护进程:

/sbin/service smb stop

要在引导时启动 smb 服务,使用以下命令:

/sbin/chkconfig --level 345 smb on

你还可以使用 chkconfigntsysv服务配置工具来配置要在引导时启动的服务。详情请参阅第14章