72. I Samba概述 1. Samba简介 SMB( Server message block)是1987年 Microsoft和 Intel共同制定的网络通讯协议, 它与 Unix/linux下的NFS( Network File System)在功用上是相似的,都是让用户端机器能 够通过网络来分享文件系统,但是SMB比NFS功能强大而且复杂。 2.安装 Samba 执行rpm- qalgrep samba命令 若执行rpm- qalgrep samba命令后没有输出任何信息,表明没有安装 Samba服务器。 3.启动 Samba 若希望 Samba服务器在计算机下次启动时自动启动,可以执行 ntsysv命令,然后选中 Smb即可。 722组建 Linux局域网与配置 Samba服务器 组建 Linux局域网与组建 Windows局域网,在物理结构上基本是一样的,不同的是网 络服务由哪种操作系统提供。在Linu局域网中,要实现资源的共享,需要配置 Samba服 务器 实例7-1组建 Windows和 Linux共存的局坷网实现资源共享 局域网中的两台电脑 台RHEL( Samba服务器)机器,IP地址是1921680.10 台 Windows XP( Samba客户端)机器,IP地址是192.1680.22; 1.配置 Samba服务器 第1步:在图形界面( GNOME)依次选择【系统】/【管理】/【服务器设置】/【 Samba】 或者在终端窗口执行 system- config- .samba命令,启动 Samba服务器配置工具,如图7-16 所示。 Samba服务器配置工具是用来管理 Samba共享、用户、以及基本服务器设置的图形 化界面。它修改/etc/ samba/smb.conf配置文件,文件中没有使用该配置工具改变的参数都会 被保留 第2步:在【 samba服务器配置】窗口中,依次选择【首选项】/【服务器设置】,出 现如图7-17所示的界面。在【基本】选项卡中,指定计算机应在的工作组以及对计算机的 简短描述,描述中的%的含义见表7-2( Samba使用的变量)。他们与 smb. conf中的 workgroup和 server string选项相对应 表72 Samba使用的变量 客户端变量 用户变量 共享变量 %客户端体系%g用户%主要组%P当前共享的根目录 户端IP地址 H用户% u home目录%当前的共享名服务器变量
7.2.1 Samba 概述 1.Samba 简介 SMB(Server Message Block)是 1987 年 Microsoft 和 Intel 共同制定的网络通讯协议, 它与 Unix/Linux 下的 NFS(Network File System)在功用上是相似的,都是让用户端机器能 够通过网络来分享文件系统,但是 SMB 比 NFS 功能强大而且复杂。 2.安装 Samba 执行 rpm –qa|grep samba 命令 若执行 rpm –qa|grep samba 命令后没有输出任何信息,表明没有安装 Samba 服务器。 3.启动 Samba 若希望 Samba 服务器在计算机下次启动时自动启动,可以执行 ntsysv 命令,然后选中 smb 即可。 7.2.2 组建 Linux 局域网与配置 Samba 服务器 组建 Linux 局域网与组建 Windows 局域网,在物理结构上基本是一样的,不同的是网 络服务由哪种操作系统提供。在 Linux 局域网中,要实现资源的共享,需要配置 Samba 服 务器。 实例 7-1 组建 Windows 和 Linux 共存的局域网实现资源共享 局域网中的两台电脑: 一台 RHEL(Samba 服务器)机器,IP 地址是 192.168.0.10; 一台 Windows XP(Samba 客户端)机器,IP 地址是 192.168.0.22; 1.配置 Samba 服务器 第 1 步:在图形界面(GNOME)依次选择【系统】/【管理】/【服务器设置】/【Samba】, 或者在终端窗口执行 system-config-samba 命令,启动 Samba 服务器配置工具,如图 7-16 所示。Samba 服务器配置工具是用来管理 Samba 共享、用户、以及基本服务器设置的图形 化界面。它修改/etc/samba/smb.conf 配置文件,文件中没有使用该配置工具改变的参数都会 被保留。 第 2 步:在【samba 服务器配置】窗口中,依次选择【首选项】/【服务器设置】,出 现如图 7-17 所示的界面。在【基本】选项卡中,指定计算机应在的工作组以及对计算机的 简短描述,描述中的%v 的含义见表 7-2(Samba 使用的变量)。他们与 smb.conf 中的 workgroup 和 server string 选项相对应。 表 7-2 Samba 使用的变量 客户端变量 用户变量 共享变量 %a 客户端体系 %g 用户%u 主要组 %P 当前共享的根目录 %I 客户端 IP 地址 %H 用户%u home 目录 %S 当前的共享名服务器变量
%m客户端 NetBios名|%UUnⅸ当前用户名% % sAmba服务器的DNS名字 %M客户端DNS名 %L| Samba服务器的 Netbios名字 Samba版本号 %T当前日期和时间 N|NS共享的目录 第3步:如图7-18所示,在【安全性】选项卡中,包含以下选项: (1)验证模式 它和 smb. conf中的 security选项相对应。选择以下验证模式中的一种。 ①域: Samba服务器通过 Windows nr主要或备份域控制器来校验用户。服务器把用 户名和口令传递给控制器,然后等待他们被返回。在【验证服务器】字段中指定主要或备份 域控制器的 NetbIos名称。【加密口令】选项如果被选,它必须被设置为“是” ②服务器: Samba服务器通过把用户名和口令的组合传递给另一个 Samba服务器来校 验用户,如果无法校验,服务器会试图使用用户验证模式来校验。在【验证服务器】字段中 指定另一个 Samba服务器的 NetbIos名称 ③用户(默认): Samba用户必须为每个 Samba服务器提供一个有效的用户名和口令。 如果想让【 Windows用户名】选项生效,选择这个选项 ④共享: Samba用户不必为每个 Samba服务器都输入用户名和口令组合。他们在试图 连接 Samba服务器上的指定共享时,才会被提示输入用户名和口令 (2)加密口令 默认值为“是”,如果用户从 Windows进行连接,该选项必须被启用。口令在服务器 和客户间使用加密格式进行传输。它和 smb. conf中的 encrypt passwords选项相对应。 (3)来宾账号 当用户或来宾用户要登录 Samba服务器时,他们必须被映射到服务器上的有效用户 选择系统中现存用户名之一作为 Samba的来宾账号。当用户使用来宾账号登录 Samba服务 器时,他们拥有和这个用户相同的特权。该选项和 smb. conf中的 guest account选项相对应。 第4步:在【 samba服务器配置】窗口中,依次选择【首选项】/【 Samba用户】,出 现如图7-19所示的界面。然后单击【添加用户】按钮。出现如图7-20所示的界面 第5步:如图7-20所示,在【创建新 Samba用户】窗口中,选择列表中一个【Unx用 户名】。如果用户在 Windows机器上有一个不同的用户名,并将从 Windows机器上登录 Samba 服务器,请在【 Windows用户名】字段中指定 Windows用户名,并且输入口令。单击【确 定】按钮。出现如图7-21所示的界面。添加的用户信息其实被写入了文件/etc/ Samba/smbusers 中,如图722所示 第6步:如图7-21所示,要编辑某个现存用户,从列表中选择它,然后单击【编辑用 户】按钮。要删除某个现存的 Samba用户,选择这个用户,然后单击【删除用户】按钮。 删除 Samba用户不会删除相关的 Red hat linux用户账号。单击【确定】按钮后,用户就 会被立即修改。 第7步:添加共享文件资源,在【 samba服务器配置】窗口中,单击工具栏上的【添加】
%m 客户端 NetBios 名 %U Unix 当前用户名 %h Samba 服务器的 DNS 名字 %M 客户端 DNS 名 %L Samba 服务器的 Netbios 名字 %v Samba 版本号 %T 当前日期和时间 %N NIS 共享的目录 第 3 步:如图 7-18 所示,在【安全性】选项卡中,包含以下选项: (1)验证模式 它和 smb.conf 中的 security 选项相对应。选择以下验证模式中的一种。 ① 域:Samba 服务器通过 Windows NT 主要或备份域控制器来校验用户。服务器把用 户名和口令传递给控制器,然后等待他们被返回。在【验证服务器】字段中指定主要或备份 域控制器的 NetBIOS 名称。【加密口令】选项如果被选,它必须被设置为“是”。 ② 服务器:Samba 服务器通过把用户名和口令的组合传递给另一个 Samba 服务器来校 验用户,如果无法校验,服务器会试图使用用户验证模式来校验。在【验证服务器】字段中 指定另一个 Samba 服务器的 NetBIOS 名称。 ③ 用户(默认):Samba 用户必须为每个 Samba 服务器提供一个有效的用户名和口令。 如果想让【Windows 用户名】选项生效,选择这个选项。 ④ 共享:Samba 用户不必为每个 Samba 服务器都输入用户名和口令组合。他们在试图 连接 Samba 服务器上的指定共享时,才会被提示输入用户名和口令。 (2)加密口令 默认值为“是”,如果用户从 Windows 进行连接,该选项必须被启用。口令在服务器 和客户间使用加密格式进行传输。它和 smb.conf 中的 encrypt passwords 选项相对应。 (3)来宾账号 当用户或来宾用户要登录 Samba 服务器时,他们必须被映射到服务器上的有效用户。 选择系统中现存用户名之一作为 Samba 的来宾账号。当用户使用来宾账号登录 Samba 服务 器时,他们拥有和这个用户相同的特权。该选项和 smb.conf 中的 guest account 选项相对应。 第 4 步:在【samba 服务器配置】窗口中,依次选择【首选项】/【Samba 用户】,出 现如图 7-19 所示的界面。然后单击【添加用户】按钮。出现如图 7-20 所示的界面。 第 5 步:如图 7-20 所示,在【创建新 Samba 用户】窗口中,选择列表中一个【Unix 用 户名】。如果用户在Windows机器上有一个不同的用户名,并将从Windows机器上登录Samba 服务器,请在【Windows 用户名】字段中指定 Windows 用户名,并且输入口令。单击【确 定】按钮。出现如图 7-21 所示的界面。添加的用户信息其实被写入了文件/etc/samba/smbusers 中,如图 7-22 所示。 第 6 步:如图 7-21 所示,要编辑某个现存用户,从列表中选择它,然后单击【编辑用 户】按钮。要删除某个现存的 Samba 用户,选择这个用户,然后单击【删除用户】按钮。 删除 Samba 用户不会删除相关的 Red Hat Linux 用户账号。单击【确定】按钮后,用户就 会被立即修改。 第 7 步:添加共享文件资源,在【samba 服务器配置】窗口中,单击工具栏上的【添加】
按钮,出现如图7-23所示的界面。在【基本】选项卡中包含以下选项 目录:通过 Samba共享的目录。这个目录必须存在 描述:对共享的简短描述。 基本权限:用户应该只能够读取/读写共享目录中的文件 第8步:如图7-24所示,在【访问】选项卡中,选择只允许指定的用户来访问共享 还是允许所有的 Samba用户来访问共享。如果选择了要允许指定用户访问,则从可用的 Samba用户列表中选择这些用户。 第9步:单击【确定】按钮后,共享就会立即被添加,如图725所示 至此, Samba服务器的基本配置己经完成,如果是手工修改 Samba的配置文件 smb. conf, 则可以执行 testparm命令检测配置文件 smb. conf语法的正确性,如图726所示。 第10步:在终端窗口执行 service smb restart命令,重启 Samba服务器。 第11步:在终端窗口执行 sy stem- config- -selinux命令,如图7-27所示,在图的左边选 择【 Boolean】,然后在图的右边展开【 samba】,选择图中的两项 注意 如果需要共享/home以外的目录,则还需将【 Allow Samba to share any file/directory read ony】或【 Allow Samba to share any file/directory read/wrte】选中。关于 Selinux的介绍见下 一节。 system-config- selinux属于 policycoreutils-gui的RPM包,如果不能执行该命令,则应该安 装 policycoreutils-gui的RPM包 SELinux Administration other Fle Labeling pping Printing Samba Policy Module D Allow samba to act as the domain controller, add users, groups and change passwords U Allow Samba to share any file/directory read only D Allow Samba to share any file/directory read/write a Allow Samba to write files in directories labeled public content rw t to login with CIFS home directories SASL authentication server pam Assassin 图7-27 SELinux中配置共享方式 第12步:在终端窗口执行 cheon命令,如图7-28所示。 rootelocalhost:- [rootolocalhost"# cheon -R-t public content rw_ t/home/ztg [rootolocalhost"# cheon -R-t samba share t/var/log/samba rootolocalhost-* 图728执行 cheon命令
按钮,出现如图 7-23 所示的界面。在【基本】选项卡中包含以下选项: 目录:通过 Samba 共享的目录。这个目录必须存在。 描述:对共享的简短描述。 基本权限:用户应该只能够读取/读写共享目录中的文件。 第 8 步:如图 7-24 所示,在【访问】选项卡中,选择只允许指定的用户来访问共享, 还是允许所有的 Samba 用户来访问共享。如果选择了要允许指定用户访问,则从可用的 Samba 用户列表中选择这些用户。 第 9 步:单击【确定】按钮后,共享就会立即被添加,如图 7-25 所示。 至此,Samba 服务器的基本配置已经完成,如果是手工修改 Samba 的配置文件 smb.conf, 则可以执行 testparm 命令检测配置文件 smb.conf 语法的正确性,如图 7-26 所示。 第 10 步:在终端窗口执行 service smb restart 命令,重启 Samba 服务器。 第 11 步:在终端窗口执行 system-config-selinux 命令,如图 7-27 所示,在图的左边选 择【Boolean】,然后在图的右边展开【samba】,选择图中的两项。 注意: 如果需要共享/home 以外的目录,则还需将【Allow Samba to share any file/directory read only】或【Allow Samba to share any file/directory read/write】选中。关于 Selinux 的介绍见下 一节。 system-config-selinux 属于 policycoreutils-gui 的 RPM 包,如果不能执行该命令,则应该安 装 policycoreutils-gui 的 RPM 包。 图7-27 SELinux中配置共享方式 第 12 步:在终端窗口执行 chcon 命令,如图 7-28 所示。 图7-28 执行chcon命令
2.认识 Samba服务器的配置文件 smb. conf Samba服务器的配置文件是 smb. conf,位于/ letc/samba目录下,对 Samba服务器的配置 其实就是对 smb. conf文件的修改,希望读者能够习惯这种配置方法,不要局限于GUI(图 形用户界面)的配置操作,因为要想真正很好的使用 Linux,用户必须掌握此方法 smb. conf文件的语法格式包含了许多区段( section),每个区段都有一个名字,用方括 号括起来,其中比较重要的区段是 global]、[ homes和 printers][ global区段定义了全局参 数,[ homes区段定义了用户的主目录文件, Printers]区段定义了打印机共享。每个区段里都 定义了许多参数,格式为“参数名=参数值”,等号两边的空格被忽略,参数值两边的空格 也被忽略,但是参数值里面的空格有意义。如果一行太长,用【】进行换行 配置文件 smb. conf的详细说明如下 E Global Settings Netwrok Related Options workgroup= MYGROUP ∥这是设置服务器所要加入的工作组的名称,会在 Windows的“网上邻居”中能看到 MYGROUP 工作组,可以在此设置所需要的工作组的名称 server string= Samba Server Version %v ∥这是设置服务器主机的说明信息,当在 Windows的“网上邻居”中打开 Samba上设置的工作组 时,在 Windows的资源管理器窗口,会列出“名称”和“备注”栏,其中“名称”栏会显示出 Samba 服务器的 NetBios名称,而“备注”栏则显示出此处设置的“ Samba Server”。当然,可以修改默认的“ Sambe Server”,使用自己的描述信息 netbios name =MYSERVER ∥设置出现在“网上邻居”中的主机名。默认情况下,使用真正的主机名 interfaces= lo eth0192.168.122/24192.16813.2/4 hosts allow=127.192.168.12.192.168.13 ∥这里是设置允许什么样的IP地址的主机访问 Samba服务器。默认的情况下, hosts allow选项被注 释,表示允许所有IP地址的主机访问 Logging Options f Log File let you specify where to put logs and how to split them up Max Log size let you specify the max size log files should reach logs split per machine k选项要求m)图为每一个连接的机器使用一个单独的日志文件,指定文件的位置,名 称。 Samba会自动将%m转换成连接主机的 Netbios名 max 50kB per log file, then rotate max log size =50 ∥指定日志文件的最大容量(以KB为单位),设置为0,表示没有限制 Scurity can be set to user, share( deprecated) or server( deprecated) Backend to store user information in. New installations should use either tdbsam or ldapsam. smbpasswd is available for backwards compatibility. tdbsam requires no further configuration security = user ∥设置 Samba服务器的安全等级。默认情况下,使用user等级 ∥ Samba服务器一共有四种安全等级 ∥ share:使用此等级,用户不需要帐号及密码可以登录 Samba服务器 ∥user:使用此等级,由提供服务的 Samba服务器检查用户帐号及密码 ∥ server:.使用此等级,检查帐号及密码的工作可指定另一台 Samba服务器负责
2.认识 Samba 服务器的配置文件 smb.conf Samba 服务器的配置文件是 smb.conf,位于/etc/samba 目录下,对 Samba 服务器的配置 其实就是对 smb.conf 文件的修改,希望读者能够习惯这种配置方法,不要局限于 GUI(图 形用户界面)的配置操作,因为要想真正很好的使用 Linux,用户必须掌握此方法。 smb.conf 文件的语法格式包含了许多区段(section),每个区段都有一个名字,用方括 号括起来,其中比较重要的区段是[global]、[homes]和[printers]。[global]区段定义了全局参 数,[homes]区段定义了用户的主目录文件,[printers]区段定义了打印机共享。每个区段里都 定义了许多参数,格式为“参数名=参数值”,等号两边的空格被忽略,参数值两边的空格 也被忽略,但是参数值里面的空格有意义。如果一行太长,用【\】进行换行。 配置文件 smb.conf 的详细说明如下: #======================= Global Settings ===================================== [global] # ----------------------- Netwrok Related Options ------------------------- workgroup = MYGROUP //这是设置服务器所要加入的工作组的名称,会在 Windows 的“网上邻居”中能看到 MYGROUP 工作组,可以在此设置所需要的工作组的名称 server string = Samba Server Version %v //这是设置服务器主机的说明信息,当在 Windows 的“网上邻居”中打开 Samba 上设置的工作组 时,在 Windows 的资源管理器窗口,会列出“名称”和“备注”栏,其中“名称”栏会显示出 Samba 服务器的 NetBios 名称,而“备注”栏则显示出此处设置的“Samba Server”。当然,可以修改默认的“Sambe Server”,使用自己的描述信息 ; netbios name = MYSERVER //设置出现在“网上邻居”中的主机名。默认情况下,使用真正的主机名 ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 ; hosts allow = 127. 192.168.12. 192.168.13. //这里是设置允许什么样的 IP 地址的主机访问 Samba 服务器。默认的情况下,hosts allow 选项被注 释,表示允许所有 IP 地址的主机访问 # --------------------------- Logging Options ----------------------------- # # Log File let you specify where to put logs and how to split them up. # # Max Log Size let you specify the max size log files should reach # logs split per machine ; log file = /var/log/samba/%m.log //这一选项要求 Samba 服务器为每一个连接的机器使用一个单独的日志文件,指定文件的位置,名 称。Samba 会自动将%m 转换成连接主机的 NetBios 名 # max 50KB per log file, then rotate ; max log size = 50 //指定日志文件的最大容量(以 KB 为单位),设置为 0,表示没有限制 # ----------------------- Standalone Server Options ------------------------ # # Scurity can be set to user, share(deprecated) or server(deprecated) # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. security = user //设置 Samba 服务器的安全等级。默认情况下,使用 user 等级 // Samba 服务器一共有四种安全等级 // share: 使用此等级,用户不需要帐号及密码可以登录 Samba 服务器 // user: 使用此等级,由提供服务的 Samba 服务器检查用户帐号及密码 // server: 使用此等级,检查帐号及密码的工作可指定另一台 Samba 服务器负责
∥ domain:使用此等级,需要指定一台 Windows nt2000XP服务器(通常为域控制器),以验证用 户输入的帐号及密码 passdb backend =tdbsam Domain Members Options Security must be set to domain or ads Use the realm option only with security ads Specifies the Active Directory realm the host is part of Backend to store user information in. New installations should f use either tdbsam or ldapsam smbpasswd is available for backwards compatibility. tdbsam requires no further configuration #f Use password server option only with security server or if you can,'t use the dns to locate domain Controllers password server My PDC Name [My bdC Name] [My Next BDC Name #f or to auto-locate the domain controller/s password server = assab backend =tdbsam password server =<NT-Server-Name> ∥如果安全等级为“ server”或“ domain”,则使用此选项指定要验证密码的主机名 guest account = pcguest ∥设置当访问那些被设置了“ guest ok=yes”参数的资源时所要使用的帐号名。默认的帐号为” obody",如果不想用默认的值,则应该去掉注释用的分号,用你想要的帐号(如 pegues、 zhangsan 等),然后,你必需将这一新帐号加入到/ etc/passwd文件中去 Security must be set to user for domain controllers Backend to store user information in. New installations should use either tdbsam or ldapsam. smbpasswd is available for backwards compatibility. tdbsam requires no further configuration. Domain Master specifies Samba to be the Domain Master Browser. This #f allows Samba to collate browse lists between subnets Don 't use this if you already have a windows nt domain controller doing this job Domain Logons let Samba be a domain logon server for windows workstatio Logon Scrpit let yuou specify a script to be run at login time on the client #f You need to provide it in a share called NETLOGON red (UNC path) #f Various on a domain controller or stand-alone machine to add or delete corresponding unix accounts security =user passdb backend=tdbsam domain master=yes the login script name depends on the machine name logon script =%m bat the login script name depends on the unix user used
// domain: 使用此等级,需要指定一台 Windows NT/2000/XP 服务器(通常为域控制器),以验证用 户输入的帐号及密码 passdb backend = tdbsam # ----------------------- Domain Members Options ------------------------ # # Security must be set to domain or ads # # Use the realm option only with security = ads # Specifies the Active Directory realm the host is part of # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. # # Use password server option only with security = server or if you can't # use the DNS to locate Domain Controllers # The argument list may include: # password server = My_PDC_Name [My_BDC_Name] [My_Next_BDC_Name] # or to auto-locate the domain controller/s # password server = * ; security = domain ; passdb backend = tdbsam ; realm = MY_REALM ; password server = <NT-Server-Name> //如果安全等级为“server”或“domain”,则使用此选项指定要验证密码的主机名 ; guest account = pcguest //设置当访问那些被设置了“guest ok=yes”参数的资源时所要使用的帐号名。默认的帐号为” nobody”,如果不想用默认的值,则应该去掉注释用的分号,用你想要的帐号(如 pcguest、 zhangsan 等 ),然后,你必需将这一新帐号加入到/etc/passwd 文件中去 # ----------------------- Domain Controller Options ------------------------ # # Security must be set to user for domain controllers # # Backend to store user information in. New installations should # use either tdbsam or ldapsam. smbpasswd is available for backwards # compatibility. tdbsam requires no further configuration. # # Domain Master specifies Samba to be the Domain Master Browser. This # allows Samba to collate browse lists between subnets. Don't use this # if you already have a Windows NT domain controller doing this job # # Domain Logons let Samba be a domain logon server for Windows workstations. # # Logon Scrpit let yuou specify a script to be run at login time on the client # You need to provide it in a share called NETLOGON # # Logon Path let you specify where user profiles are stored (UNC path) # # Various scripts can be used on a domain controller or stand-alone # machine to add or delete corresponding unix accounts # ; security = user ; passdb backend = tdbsam ; domain master = yes ; domain logons = yes # the login script name depends on the machine name ; logon script = %m.bat # the login script name depends on the unix user used ; logon script = %u.bat