分类: LINUX
2008-05-04 21:30:45
Samba使用SMB协议来通过网络连接共享文件和打印机。支持该协议的操作系统包括Microsoft Windows、OS/2、和 Linux。GTES11内核包含对ext3文件系统的存取控制列表(Access Control List,ACL)支持。如果Samba服务器共享一个启用了ACL的ext3文件系统,而且客户系统的内核包含对从ext3文件系统读取ACL的支持,该客户就会自动识别和使用ACL。
如果你的网络中既有Windows机器又有Linux机器,Samba就会发挥作用。Samba会允许文件和打印机被网络中的所有系统共享。
默认的配置文件(/etc/samba/smb.conf)允许用户把他们的主目录作为Samba共享来查看。它还把为系统配置的打印机作为Samba共享打印机来共享。换一句话说,你可以在你的系统上连接打印机,然后从网络上的Windows机器来打印。
要使用图形化界面来配置Samba,使用Samba服务器配置工具。Samba服务器配置工具是用来管理Samba共享、用户以及基本服务器设置的图形化界面。它修改/etc/samba/目录中的配置文件。没有使用该程序进行的改变都会被保留。
要使用该程序,你必须在运行 X 窗口系统,具备根特权,并且安装了system-config-samba RPM软件包。要从桌面启动Samba服务器配置工具,点击面板上的“系统 -> 管理 -> 服务器设置 -> Samba”,或在shell提示(如XTerm或GNOME终端)下键入system-config-samba命令。
图 3-17 Samba 服务器配置工具
配置Samba服务器的第一步是配置服务器的基本设置和几个安全选项。启动了应用程序后,选择“首选项 -> 服务器设置”。“基本”活页标签如图3-18所示。
图 3-18 配置基本服务器设置
在“基本”标签上,指定计算机应在的工作组以及对计算机的简短描述。它们与smb.conf中的workgroup和server string选项相对应。
图 3-19 配置安全服务器设置
“安全性”标签包含以下选项:
• 验证模式 — 它和security选项相对应。选择以下验证模式中的一种。
• ADS — Samba服务器充当活跃目录域(ADS)领域中的一个成员,Kerberos在服务器上必须被安装和配置,并且Samba必须使用net工具成为ADS 领域的一员。net是samba-client软件包的一部分。该选项不会把Samba配置成一个ADS控制器。
• 域 — Samba服务器依赖于Windows NT主要或备份域控制器来校验用户。服务器把用户名和口令传递给控制器,然后等待它们被返回。在“验证服务器”字段中指定主要或备份域控制器的NetBIOS 名称。 如果“加密口令”选项被选,它必须被设置为“是”。 • 服务器 — Samba服务器试图通过把用户名和口令组合传递给另一个Samba服务器来校验它们。如果它无法校验,服务器会试图使用用户验证模式来校验它们。在“验证服务器”字段中指定另一个Samba服务器的NetBIOS名称。
• 共享 — Samba用户不必为每个Samba服务器都输入用户名和口令组合。它们在试图连接Samba服务器上的指定共享时才会被提示输入用户名和口令。
• 用户 — (默认)Samba用户必须为每个Samba服务器提供一个有效的用户名和口令。如果你想让“Windows 用户名”选项生效,选择这个选项。
• 加密口令 — 如果用户从Windows 98、带有服务包3的Windows NT 4.0或其它最近版本的Microsoft Windows中连接,该选项必须被启用。口令在服务器和客户间使用加密格式而非可被截取的纯文本格式传输。它和encrypted passwords选项相对应。
• 来宾账号 — 当用户或来宾用户要登录入 Samba 服务器时,他们必须被映射到服务器上的有效用户。选择系统上的现存用户名之一作为来宾Samba账号。当用户使用来宾账号登录入Samba服务器,他们拥有和这个用户相同的特权。该选项和guest account选项相对应。
点击了“确定”后,所做改变会被写入配置文件,守护进程会被重新启动;因此改变会立即生效。
Samba服务器配置工具要求在添加Samba用户之前,在充当Samba服务器的系统上必须存在一个活跃的用户账号。Samba用户和这个现存的用户账号相关联。
图 3-20 管理 Samba 用户
要添加Samba用户,选择“首选项 -> Samba 用户”,然后点击“添加用户”按钮。在“创建新Samba用户”窗口中的本地系统上的现存用户列表中选择“Unix用户名”。 如果用户在Windows机器上有一个不同的用户名,并将从Windows机器上登录入Samba服务器,请在“Windows用户名”字段中指定Windows用户名。“服务器设置”首选项的“安全”活页上的“验证模式” 必须被设置为“用户”才能是这个选项生效。 你还需要为Samba用户配置一个“Samba 口令”,并再键入一次来确认这个口令。即便你选择了为Samba使用加密口令,仍建议你为所有用户设置一个不同于他们的系统口令的Samba口令。 要编辑某个现存用户,从列表中选择它,然后点击“编辑用户”。要删除某个现存的Samba用户,选择这个用户,然后点击“删除用户”按钮。删除 Samba 用户不会删除相关的用户账号。 点击了“确定”按钮后,用户就会被立即修改。
图 3-21 添加共享
要添加共享,点击“添加”按钮。“基本”活页标签配置以下选项:
• 目录 — 通过Samba共享的目录。这个目录必须存在。
• 描述 — 对共享的简短描述。
• 基本权限 — 用户应该只能够读取共享目录中的文件还是应该能够读写共享目录中的文件。
在“访问”活页标签上,选择是否要只允许指定的用户来访问共享还是允许所有Samba用户来访问共享。如果你选择了要允许指定用户访问,从可用的Samba用户列表中选择这些用户。 点击了“确定”按钮后,共享就会立即被添加。
Samba使用/etc/samba/smb.conf作为它的配置文件。如果你改变了这个配置文件,这个改变直到你重启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客户中读写Samb服务器上的目录/home/share。
加密口令被默认启用,因为它更安全。如果加密口令没有被使用,纯文本口令就会被使用,它能够被别人使用网络分组嗅探器来截取。建议你使用加密口令。 Microsoft SMB协议最初使用纯文本口令。然而,带有服务包3或更高的Windows NT 4.0/2000/XP要求加密的Samba口令。要在Linux系统和运行以上Windows操作系统的系统间使用Samba,你可以编辑Windows注册器来使用纯文本口令或配置你的Linux系统的Samba来使用加密口令。如果你要修改注册器,你必须为所有Windows机器这么做 — 这很冒险,有可能导致进一步的冲突。为了更高的安全性,推荐你使用加密口令。 要配置Samba使用加密口令,遵循以下步骤:
• 为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目录上。 • 改变 Samba 口令文件的权限许可,因此只有根用户才有读写权限:
chmod 600 /etc/samba/smbpasswd
• 这个脚本不会把用户口令复制到新文件,Samba用户账号在没有设置口令之前不会被激活。为了更高的安全性,建议你把用户的Samba口令设置为不同于用户的口令的口令。要设置每个Samba用户的口令,使用以下命令(把username替换为每个用户的用户名):
smbpasswd username
• 加密口令必须被启用。由于它们被默认启用,它们不必在配置文件中被特别启用。不过,它们也不能在配置文件中被禁用。在smb.conf文件中,请确定以下行不存在:
encrypt passwords = no
如果它确实存在,请在行首加一个分号(;)来把它变成注释,这样该行就会被忽略,加密口令就会被启用。如果该行存在但没有被注释掉,请删除它或把它变成注释。 要在配置文件中特别启用加密口令,给/etc/samba/smb.conf文件添加以下几行:
encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd
• 在 shell提示下键入service smb restart来确定smb服务被启动。
• 如果你想让smb服务被自动启动,使用 ntsysv、chkconfig或服务配置工具来在运行时间启用它。
当使用了passwd命令后,pam_smbpass PAM模块能够被用来同步用户的Samba口令和他们的系统口令。如果用户引发了passwd命令,他用来登录到GTES11系统的口令以及他要连接Samba共享所必须提供的口令就会被改变。要启用这个功能,把以下行添加到/etc/pam.d/system-auth的pam_cracklib.so之下:
password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass
在通过 Samba 共享目录的服务器上必须运行 smb 服务。 • 使用以下命令来查看 Samba 守护进程的状态: /sbin/service smb status • 使用以下命令来启动守护进程: /sbin/service smb start • 使用以下命令来停止守护进程: /sbin/service smb stop • 要在引导时启动 smb 服务,使用以下命令: /sbin/chkconfig –level 345 smb on 你还可以使用 chkconfig、ntsysv 或服务配置工具来配置要在引导时启动哪些服务。
你还可以使用 Nautilus 来查看你的网络上的可用 Samba 共享。选择面板上的“位置-> 网络服务器”来查看你的网络上的 Samba 工作组的列表。你还可以在 Nautilus 的“位置:”栏里键入 smb: 来查看工作组。 如图 3-22 所示,在网络上每个可用 SMB 工作组旁边都会出现一个图标。
图 3-22 Nautilus 中的 SMB 工作组
双击工作组图标之一来查看那个工作组内的计算机的列表。
图 3-23 Nautilus 中的 SMB 机器
如你在图 3-23中所见,工作组内每个机器都有一个图标。双击某个图标来查看该机器上的 Samba 共享。如果需要用户名和口令组合,你会被提示输入它们。 你也可以在 Nautilus 的“位置:”栏内使用以下语法(把
smb:/// /
要查询网络上的 Samba 服务器,使用 findsmb 命令。每个找到的服务器都会显示其 IP 地址、NetBIOS 名称、工作组名称、操作系统、以及 SMB 服务器版本。 要连接 Samba 共享,从 shell 提示下,键入以下命令: smbclient