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名
%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步:单击【确定】按钮后,共享就会立即被添加,如图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,位于/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 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; logon path = \\%L\Profiles\%u
# disables profiles support by specifing an empty path; logon path =
; add user script = /usr/sbin/useradd "%u" -n -g users; add group script = /usr/sbin/groupadd "%g"; add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"; delete user script = /usr/sbin/userdel "%u"; delete user from group script = /usr/sbin/userdel "%u" "%g"; delete group script = /usr/sbin/groupdel "%g"

# ----------------------- Browser Control Options ----------------------------
#
# set local master to no if you don't want Samba to become a master
# browser on your network,Otherwise the normal election rules apply
#
# OS Level determines the precedence of this server in master browser
# elections,The default value should be reasonable
#
# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election; local master = no; os level = 33; preferred master = yes

#----------------------------- Name Resolution -------------------------------
# Windows Internet Name Serving Support Section:
# Note,Samba can be either a WINS Server,or a WINS Client,but NOT both
#
# - WINS Support,Tells the NMBD component of Samba to enable it's WINS Server
#
# - WINS Server,Tells the NMBD components of Samba to be a WINS Client
#
# - WINS Proxy,Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client,for this to work there must be
# at least one WINS Server on the network,The default is NO.
#
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups.
; wins support = yes; wins server = w.x.y.z; wins proxy = yes; dns proxy = yes //为客户做DNS查询

# --------------------------- Printing Options -----------------------------
# You can choose a non default printing system using the Printing option

load printers = yes //是否加载打印机配置文件
cups options = raw; printcap name = /etc/printcap //设置打印机配置文件路径
#obtain list of printers automatically on SystemV; printcap name = lpstat; printing = cups //设置打印系统类型
# --------------------------- Filesystem Options ---------------------------
#
# The following options can be uncommented if the filesystem supports
# Extended Attributes and they are enabled (usually by the mount option
# user_xattr),Thess options will let the admin store the DOS attributes
# in an EA and make samba not mess with the permission bits.
#
# Note,these options can also be set just per share,setting them in global
# makes them the default for all shares; map archive = no; map hidden = no; map read only = no; map system = no; store dos attributes = yes
#============================ Share Definitions ==============================

[homes]
comment = Home Directories //针对共享资源所作的说明、注释部分
browseable = no
//设置用户是否可以看到此共享资源。默认值为yes,若将此参数设置为no,用户虽然看不到此资源,但是拥有权限的用户仍可直接输入该资源的网址来访问该资源
writable = yes
//设置共享的资源是否可以写入。若共享资源是打印机,则不需设置此参数; valid users = %S
//设置可访问的用户。系统会自动将%S转换成登录帐号; valid users = MYDOMAIN\%S

[printers]
comment = All Printers //针对共享资源所作的说明、注释部分
path = /var/spool/samba
//若共享资源是目录,则指定目录的位置;若为打印机,则指定打印机队列的位置
browseable = no
guest ok = no
writable = no
printable = yes

# Un-comment the following and create the netlogon directory for Domain Logons; [netlogon]; comment = Network Logon Service; path = /var/lib/samba/netlogon; guest ok = yes; writable = no; share modes = no

# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory; [Profiles]; path = /var/lib/samba/profiles; browseable = no; guest ok = yes
//指定是否允许guest帐户访问

# A publicly accessible directory,but read only,except for people in
# the "staff" group; [public]; comment = Public Stuff; path = /home/samba
//若共享资源是目录,则指定目录的位置;若为打印机,则指定打印机队列的位置; public = yes
//等同于guest ok选项,表示是否允许用户不使用帐号和密码便能访问此资源。如果起用此功能,当用户没有帐号和密码时,则会利用“guest account=”所设置的帐号名登录。该选项默认值为no,即不允许没有帐号即密码的用户使用此资源; available = yes
//设置是否启用此共享资源。默认值为yes。若将此参数设置为no,则不管其他参数设置为什么,所有人均不得使用此资源; create mode = 0664
//设置文件的访问权限,默认值为0744; directory mode = 0775
//设置目录的访问权限,默认值为0755; writable = yes; printable = no; write list = +zhang
//write list参数是用来设置具有写权限的用户列表。这里只允许zhang组的成员有写的权限
3.在Windows XP中的设置资源共享与访问Samba共享资源第1步:在Windows XP中的设置资源共享,首先在桌面创建文件夹winXPshare,右键单击,在右键菜单中选择【共享与安全】选项,然后进行【网络共享与安全】的设置,如图7-29所示。
4.在Linux中访问Samba共享资源地址栏里输入smb:
使用smbclient命令访问共享资源格式有两种:
格式1:smbclient //NetBIOS名或IP地址/共享名 -U 用户名格式2:smbclient -L NetBIOS名或IP地址
7.2.3 SELinux简介在终端窗口执行system-config-securitylevel命令,或者在GNOME桌面依次选择【系统】/【管理】/【安全级别和防火墙】,打开【安全级别设置】对话框,如图7-42所示。默认设置为“强制”,表示强制执行SELinux的安全策略;“允许”表示当有违反策略的行为时,只给出警告,不会中止该行为;“禁用”表示关闭SELinux的安全策略。

图7-42 设置SELinux
 注意:
与SELinux有关的主要操作有:ls -Z、ps -Z、id -Z等,这几个命令的-Z参数专用于SELinux,可以查看文件、进程和用户的SELinux属性。命令chcon用来改变文件的SELinux属性。