在本章案例讲解中通过4个模拟项目对Samba的功能进行演示,
其中第一个案例模拟一个企业中服务器全部基于RHEL5.x,客户端在访问Samba服务器时,用户认证及所有用户行为控制全部通过RHEL5.x完成。
第二个案例模拟一个异构环境,在企业中已使用微软的Windows Server 2003实现了活动目录管理,希望通过Samba服务器搭建一台文件服务器,为便于客户端访问,需要将Samba中加入活动目录,其用户认证工作由活动目录完成。
第三及第四个案例属于Samba服务器高级应用,通过Samba通过Windows Server 2003活动目录的域控制器及模拟DFS功能。
企业文件服务器搭建案例(1)
在本案例中访问Samba文件服务器时需要通过身份认证,而验证用户的工作由Samba本机系统内置账户完成。
1.案例环境
某企业需要配置一台文件服务器,使企业内员工可以方便地进行资源共享及使用网络打印机。该企业的网络拓扑如图6-60所示,企业中所有客户端全部使用的Windows XP,其中设计部计算机位于192.168.0.0/24网段、市场部计算机位于192.168.1.0/24、计划财务部计算机位于192.168.2.0/24网段。该企业组织结构如图6-61所示。企业采购的文件服务器已安装RHEL5.x,IP地址为192.168.0.2;FQDN为fs.example.com,YUM仓库及客户端已配置完成。每位员工用户建立完成并将/dev/sda10挂载到/share作为共享分区。企业对文件服务器的要求如下。
(1)计划财务部及设计部所有客户端,但公用计算机(pub.example.com)除外,可以使用该文件服务器。
(2)设计部所有客户端可以使用文件服务器上的光驱。
(3)需要一个存放内部资料的目录,所有用户只可读其中内容。
(4)每个部门有一个需要一个存放资料的公用目录,只允许该部门员工可见/可读/可写。
(5)每个部门的公用目录中的内容,除了上传文件的用户及管理员以外其他用户不能删除。
(6)每位员工有一个自己的目录,除自己可读/可写外,只有该部门经理可读。
(7)部门经理每位可在该文件服务器存放10GB文件,设计部每位员工可在该文件服务器存放15GB文件,计划财务部每位员工可在该文件服务器存放5GB文件。
wKiom1QXlvGh3xDwAAhV2oPMFiI508.png
2.案例实施
(1)在fs.example.com上安装Samba服务。
yum -y install samba.i*
(2)在fs.example.com上配置/dev/sda10挂载参数,让该分区支持acl及硬盘配额。在/etc/fstab中将/dev/sda10的参数改为以下内容,修改完成后用mount -o remount /share命令重新载入挂载参数。
/dev/sda10 /share ext3 defaults,acl,usrquota,grpquota 0 0
(3)在fs.example.com上根据部门建立用户组,并将用户加入相应组。
#设计部部门组。 groupadd design #计划财务部部门组。 groupadd finance #部门经理组。 groupadd manager #以下是将设计部所有员工初始组设置为design。 usermod -g design davidxu usermod -g design tomyang #以下是将计划财务部所有员工初始组设置为finance。 usermod -g finance mikeliu usermod -g finance janeli #以下是将manager组加入计划财务部及设计部二位经理的额外组。 usermod -aG manager davidxu usermod -aG manager janeli
(4)在fs.example.com上建立所需目录。
#内部资料公用目录。 mkdir /share/public #设计部专用目录。 mkdir /share/design #计划财务部专用目录。 mkdir /share/finance #设计部公用目录。 mkdir /share/design/public #计划财务部公用目录。 mkdir /share/finance/public #以下是为每位员工建立专用目录 mkdir /share/design/davidxu mkdir /share/design/tomyang mkdir /share/finance/mikeliu mkdir /share/finance/janeli #以下是为通过Sticky实现每个部门公用目录除了上传文件的用户及管理员以外其他用户不#能删除 chmod o+t /share/design/public chmod o+t /share/finance/public
(5)在fs.example.com上将系统用户加入Samba服务器。
smbpasswd -a davidxu smbpasswd -a tomyang smbpasswd -a mikeliu smbpasswd -a janeli
6.9.1 企业文件服务器搭建案例(2)
(6)在fs.example.com上使用如下命令修改SELinux状态。
setsebool -P samba_domain_controller on setsebool -P samba_enable_home_dirs on setsebool -P samba_export_all_rw on setsebool -P smbd_disable_trans=1 chcon -R -t samba_share_t /share chcon -R -t samba_share_t /bin/mount chcon -R -t samba_share_t /bin/umount
(7)在fs.example.com上修改smb.conf,在[global]标签下加入如下内容。
[global] hosts allow = lo 192.168.0. 192.168.2. EXCEPT 192.168.0.99 include = /etc/samba/%G.smb.conf include = /etc/samba/%U.smb.conf
(8)在fs.example.com上修改smb.conf文件,内容如下。
[public] path = /share/public [cdrom] path = /mnt/cdrom root preexec = /bin/mount -t iso9660 /dev/cdrom /mnt/cdrom root postexec = /bin/umount /mnt/cdrom
(9)在fs.example.com上/etc/samba目录下建立以下子配置文件。
design.smb.conf
[design] path = /share/design/public write list = @design
davidxu.smb.conf
[davidxu] path = /share/design/davidxu write list = davidxu [tomyang] path = /share/design/tomyang readonly = yes
tomyang.smb.conf
[tomyang] path = /share/design/tomyang write list = tomyang
finance.smb.conf
[finance] path = /share/finance/public write list = @finance
mikeliu.smb.conf
[mikeliu] path = /share/finance/mikeliu write list = mikeliu [janeli] path = /share/finance/janeli read only = yes
janeli.smb.conf
[janeli] path = /share/finance/janeli write list = janeli
(10)在fs.example.com上设置目录自身权限。
setfacl -R -m d:g:design:rwx /share/design setfacl -R -m g:design:rwx/share/design setfacl -R -m d:g:finance:rwx /share/finance setfacl -R -m g:finance:rwx /share/finance (11)在fs.example.com上配置磁盘配额。
(11)在fs.example.com上配置磁盘配额。
(12)在fs.example.com上启动Samba服务,并设置为下次启动自动加载。
service smb restart chkconfig smb on
到此Samba服务器的配置已可满足该企业的所有需求。
异构环境文件服务器搭建案例(2)
在本案例中访问Samba文件服务器时需要通过身份认证,而验证用户的工作是由Windows Server 2003的域控制器完成。
1.案例环境
某企业中已在使用微软基于Windows Server 2003活动目录进行管理,现需要配置一台文件服务器,使企业内员工可以方便地进行资源共享及使用网络打印机。该企业的网络拓扑如图6-62所示,企业现有网络中域控制器名称dc1.example.com、dc2.example.com,所有客户端全部使用的Windows XP并加入到example.com域中,其中设计部计算机位于192.168.0.0/24网段,市场部计算机位于192.168.1.0/24,计划财务部计算机位于192.168.2.0/24网段。该企业活动目录用户及组情况如图6-63所示。企业采购的文件服务器已安装RHEL5.x,IP地址为192.168.0.2,FQDN为fs.example.com,YUM仓库及客户端已配置完成。将/dev/sda10挂载到/share作为共享分区。企业对文件服务器的要求如下。
(1)所有用户访问Samba服务器不需要进行二次用户认证。
(2)需要一个存放内部资料的目录,所有用户只可读其中内容。
(3)每个部门有一个需要一个存放资料的目录,只允许该部门员工可见/可读/可写,其内容除了上传文件的用户及管理员以外其他用户不能删除。
(4)每位员工有一个自己的目录,除自己可读可写外,只有该部门经理可读。
wKiom1QXl3GTjU2sAASYIbnsskI749.png
2.案例实施
(1)在fs.example.com上安装Samba服务。
yum -y install samba.i*
(2)在fs.example.com上修改/etc/smb.conf,在[global]标签下配置如下参数。
[global]
#设置Samba服务器要加入域的NetBIOS名。
workgroup = EXAMPLE
# Samba服务器的描述信息。
server string = Samba Server In example.com
# Samba服务器的NetBIOS名称。
netbios name = fs
#--------------------------------winbind options------------
----------------------------------
# winbind enum groups及winbind enum users用于设置winbind是否
在系统上创建域的组、#用户,一般情况下都要设置为yes。
winbind enum users = yes
winbind enum groups = yes
# idmap uid及idmap gid用于设置winbind把域用户、组映射成Linux系
统用户、组所使用#的ID号范围,如果用户很多,可以适当加大两个值之间的差额。
idmap uid = 10000-20000
idmap gid = 10000-20000
#指定用户登录后的主目录,一般设置成/home/域名/用户名。
template homedir = /home/%D/%U
#指定用户登录后的shell。
template shell = /bin/bash
#指定在获取账户信息时,域名与用户名之间的分隔符。
winbind separator = /
#将Samba服务加入到活动目录中作为成员服务器时,用户验证级别必须为ads,这样当
#活动目录用户访问Samba服务器时Samba服务器才会将身份验证工作交给域控制器完成。
security = ads
#设置Samba服务器用户密码的存放方式,tdbsam是使用一个数据库文件来建立用户数
#据库。数据库文件为passdb.tdb,默认在/etc/samba目录下。
passdb backend = tdbsam
password server = 192.168.0.2 #设置用于进行身份验证域控制器的IP地址
realm = EXAMPLE.COM #设置进行身份验证的域
(3)在fs.example.com上修改/etc/smb.conf中[homes]标签内容。
[homes] comment = Home Directories path=/home/%D/%U valid users=%U browseable = no writable = yes
异构环境文件服务器搭建案例(3)
(4)在fs.example.com上修改/etc/nsswitch.conf,在其中关于用户、组的验证方法处加入winbind。
passwd: files winbind shadow: files group: files winbind
(5)在fs.example.com上修改/etc/krb5.conf文件,指定在关Kerberos身份验证的参数。
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false MOTOR OIL dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes [realms] EXAMPLE.COM = { kdc = dc.example.com:88 admin_server = dc.example.com:749 default_domain = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
(6)在fs.example.com上同步Samba服务器与活动目录的时间(在默认情况下当客户端与域控制器的时间差超过5min,客户端将无法加入或登录到域中)。
ntpdate -b dc.example.com
(7)在fs.example.com上将Samba服务器加入到example.com域中。
net ads join -U administrator
(8)建立活动目录用户在Samba服务器(fs.example.com)的家目录。
#建立活动目录中用户的家目录。 mkdir /home/EXAMPLE mkdir /home/EXAMPLE /davidxu mkdir /home/EXAMPLE /tomyang mkdir /home/EXAMPLE /mikeliu mkdir /home/EXAMPLE /janeli #修改家目录的拥有者及拥有组。 chown "/home/EXAMPLE/davidxu":"EXAMPLE/domain users" davidxu chown "/home/EXAMPLE/tomyang":"EXAMPLE/domain users" tomyang chown "/home/EXAMPLE/mikeliu":"EXAMPLE/domain users" mikeliu chown "/home/EXAMPLE/janeli":"EXAMPLE/domain users" janeli #将用户配置文件、登录脚本、注销脚本模板复制到用户家目录。 cp /etc/skel/.* /home/EXAMPLE/davidxu cp /etc/skel/.* /home/EXAMPLE/tomyang cp /etc/skel/.* /home/EXAMPLE/mikeliu cp /etc/skel/.* /home/EXAMPLE/janeli #修改用户配置文件、登录脚本、注销脚本的拥有者及拥有组。 chown "/home/EXAMPLE/davidxu ":"/home/EXAMPLE/domain users " .* chown "/home/EXAMPLE/tomyang ":"/home/EXAMPLE/domain users" .* chown "/home/EXAMPLE/mikeliu ":"/home/EXAMPLE/domain users" .* chown "/home/EXAMPLE/janeli ":"/home/EXAMPLE/domain users" .*
(9)在fs.example.com上将smb及winbind服务重新启动,并设置为下次启动自动加载。
service winbind restart service smb restart chkconfig winbind on chkconfig smb on
(10)在Samba服务器配置共享资源方法与6.9.1节中配置共享资源方法相同。
到此Samba服务器的配置已可满足该企业的所有需求。