7 Samba企业实战与应用
7.1 企业环境及需求

samba服务器目录:

企业数据目录:/companydata

公共目录:/companydata/share

销售部目录:/companydata/sales

技术部:/companydata/tech

企业员工情况:

总经理:gm

销售部:销售部经理 redking、员工 sky、员工 jane

技术部:技术部经理 michael、员工 bill、员工 joy

搭建samba文件服务器,建立公共共享目录,允许所有人访问,权限为只读,为销售部和技术部分别建立单独的目录,只可以总经理和相应部门员工访问,并且公司员工禁止访问非本部门的共享目录。这是个典型的企业文件服务器案例哈。

总经理-----------------------
                                        |
销售部-------------------交换机--------------------samba服务器
                                         |
技术部-----------------------

7.2 需求分析

对于建立公共目录public字段就可以实现匿名访问,员工只能访问本部门的共享目录,禁止访问非本部门的共享目录,我们可以通过设置目录共享字段“browseable = no”及字段“valid users”来实现其隐藏功能和相应的访问权限。这样设置不能很好得解决同一目录多种需求的权限设置,所以我们需要建立独立配置文件,为每个部门建立一个组后并为每个组建立配置文件来实现隔离用户权限会比较灵活哈~

7.3 解决方案

1)建立各部门专用共享目录

使用mkdir建立需求的共享目录以便分门别类的存储相应资料。


同时设置/companydata共享目录的用户权限


2)添加samba服务器描述及设置smbpasswd文件


默认/etc/samba/目录下没有smbpasswd文件,我们要先关闭sambatdbsam验证。

解决方法:在smb.conf文件中注释掉passdb backend = tdbsam一行,为了指定samba用户的验证我们加上这一条smbpasswd file = /etc/samba/smbpasswd,然后保存退出。


3)添加用户和组

先建立销售部组sales,技术部组tech,然后使用useradd命令添加总经理帐号gm及各个员工的帐号并加入相应的用户组。


接着使用smbpasswd命令添加samba用户


~~~不好意思哈~~~帐号gmsamba用户忘记添加了,现在补上哈~


4)配置smb.conf文件

1)建立单独配置文件

用户配置文件使用用户名命令哈,组配置文件使用组名命令。


2)设置主配置文件smb.conf

这里我们配置smb.conf主配置文件,在global中添加相应字段哈,确保samba服务器的主配置文件可以调用独立的用户配置文件和组配置文件。

include = /etc/samba/%U.smb.conf表示使samba服务器加载/etc/samba目录下格式为用户名.smb.conf”的配置文件。

include = /etc/samba/%G.smb.conf表示使samba服务器加载/etc/samba目录下格式为组名.smb.conf”的配置文件。


设置共享目录/companydata/share


5)设置总经理gm配置文件

vim /etc/samba/gm.smb.conf


6)设置销售部组sales配置文件

vim /etc/samba/sales.smb.conf


7)设置技术部组tech配置文件

vim /etc/samba/tech.smb.conf


8)开启samba服务

service smb start

p_w_picpath

9)测试

我们先用gm帐号登录测试


可以全部看到共享目录。


/companydata/share目录只读


注意:

最好禁用RHEL5中的selinux功能,否则会出现些莫名其妙滴问题,比如下面的帐号gm明明对共享目录salestech777的权限,但就是只能创建文件却不能创建文件夹哈~


关闭selinux,打开selinux配置文件/etc/selinux/config设置selinux = disabled后保存退出并重启系统。


查看selinux当前状态sestatus -v


现在我们就可以创建文件夹了


现在我们以其他帐号测试,就用技术部joy


在这里技术部的员工就看不到销售部的共享目录。同时对public目录只读权限,对tech目录有读写权限。


因为禁止对共享目录sales访问,就算知道了\\rhel5\sales路径也是不能访问滴


8 Samba排错

1Linux服务一般滴排错方法

1)错误信息

一般仔细看下显示的错误信息,根据错误提示一般滴问题就可以判断问题出在什么地方了。

2)配置文件

2个我们可以查配置文件,有时可能误操作导致配置失误,服务无法正常运行,我们可以通过检查配置文件来确认问题。现在很多服务的软件包有自带配置文件检查工具,我们可以通过这些工具对配置文件进行检查哈~

3)日志文件

如果服务出现问题,我们还可以使用tail命令来动态监控日志文件(在CLI状态下可以使用Ctrl+Alt+F1~F6切换到另一个CLI文字终端下查看)。

tail -F /var/log/messages

2samba服务故障排错

1)使用testparm命令检查

上面偶提到软件包有自带的配置文件检查工具,我们可以使用testparm命令检测smb.conf文件的语法,如果报错,说明smb.conf文件设置有错误哈,这样我们可以根据提示信息来修改主配置文件和独立配置文件。

testparm /etc/samba/smb.conf

[root@rhel5 ~]# testparm  /etc/samba/smb.conf
Load smb config  files from /etc/samba/smb.conf
 Can't find include file /etc/samba/.smb.conf
 Can't find include file /etc/samba/%G.smb.conf
 Processing section "[homes]"
 Processing section "[printers]"
 Processing section "[public]"
 Loaded services file OK.
 Server role: ROLE_STANDALONE
 Press enter to see a dump of your service definitions

[global]
         workgroup = COMPANYDOMAIN
         server string = Company Samba File  Server
         cups options = raw
         include = /etc/samba/%G.smb.conf

[homes]
         comment = Home Directories
         read .ly = No
         browseable = No

[printers]
         comment = All Printers
         path = /var/spool/samba
         printable = Yes
         browseable = No

[public]
         comment = public data
         path = /companydata/share
         guest ok = Yes
 [root@rhel5 ~]#
testparm /etc/samba/gm.smb.conf
Load smb config  files from /etc/samba/gm.smb.conf
 Processing section "[homes]"
 Processing section "[printers]"
 Processing section "[sales]"
 Processing section "[tech]"
 Loaded services file OK.
 Server role: ROLE_STANDALONE
 Press enter to see a dump of your service definitions

[global]
         workgroup = COMPANYDOMAIN
         server string = Company Samba File  Server
         cups options = raw

[homes]
         comment = Home Directories
         read .ly = No
         browseable = No

[printers]
         comment = All Printers
         path = /var/spool/samba
         printable = Yes
         browseable = No

[sales]
         comment = sales data
         path = /companydata/sales
         valid users = gm
         read .ly = No

[tech]
         comment = tech data
         path = /companydata/tech
         valid users = gm
         read .ly = No
 [root@rhel5 ~]#
testparm /etc/samba/sales.smb.conf
 Load smb config files from /etc/samba/sales.smb.conf
 Processing section "[homes]"
 Processing section "[printers]"
 Processing section "[sales]"
 Loaded services file OK.
 Server role: ROLE_STANDALONE
 Press enter to see a dump of your service definitions

[global]
         workgroup = COMPANYDOMAIN
         server string = Company Samba File  Server
         cups options = raw

[homes]
         comment = Home Directories
         read .ly = No
         browseable = No

[printers]
         comment = All Printers
         path = /var/spool/samba
         printable = Yes
         browseable = No

[sales]
         comment = sales data
         path = /companydata/sales
         valid users = @sales, gm
         read .ly = No
 [root@rhel5 ~]#
testparm /etc/samba/tech.smb.conf
 Load smb config files from /etc/samba/tech.smb.conf
 Processing section "[homes]"
 Processing section "[printers]"
 Processing section "[tech]"
 Loaded services file OK.
 Server role: ROLE_STANDALONE
 Press enter to see a dump of your service definitions

[global]
         workgroup = COMPANYDOMAIN
         server string = Company Samba File  Server
         cups options = raw

[homes]
         comment = Home Directories
         read .ly = No
         browseable = No

[printers]
         comment = All Printers
         path = /var/spool/samba
         printable = Yes
         browseable = No

[tech]
         comment = tech data
         path = /companydata/tech
         valid users = @tech, gm
         read .ly = No
 [root@rhel5 ~]#

2)使用ping命令测试

samba服务器主配置文件排除错误后重启smb服务,如果客户端仍然无法连接samba服务器,我们在客户端可以使用ping命令进行测试,这个我们微软的系统中排障一样哈,根据出现的不同情况可以进行分析哈。

1)如果没有收到任何提示,说明客户端TCP/IP协议安装有问题,需要重新安装客户端TCP/IP协议,然后重新测试。

2)如果提示“host not found”则检查客户端DNS或者/etc/hosts文件有没正确设置,确保客户端能够使用名称访问samba服务器。

3)无法ping通还可能是防火墙设置滴问题,需要重新设置防火墙的规则,开启samba与外界联系的端口。

4)当然还有一种低级的情况,那就是由于主机名输入错误导致不能ping通,请更正后重试哈~~~O(^_^)O

3)使用smbclient命令进行测试

如果客户端与samba服务器可以ping通,说明客户端与服务器间的连接没有问题哈,如果还是不能访问samba共享资源,可以执行smbclient命令进一步测试服务器端的配置。

如果测试samba服务器正常,并且输入了正确的帐号和密码,那么执行smbclient命令就可以获得共享列表。

smbclient -L 192.168.0.188 -U joy%123


如果我们看到了错误信息提示“tree connect failed”则说明可以在smb.conf文件中设置了host deny字段拒绝了客户端的IP地址或域名,我们可以修改smb.conf配置文件允许客户端访问就可以了哈~


如果返回信息是“connection refused”提示拒绝连接则说明是samba服务器smbd进程可以没有被开启哈~我们必须确保smbdnmbd进程处于开启状态,并使用netstat -a检查netbios使用的139端口是否处于监听状态哈。


检查samba服务


开启smb服务

netbios-ssn 会话管理
netbios-ns 名字解析
netbios-dgm 数据报


如果提示“session setup failed”连接建立失败则说明服务器拒绝了连接请求,这是因为输入的用户名和密码错误引起滴,我们输入正确的帐号和密码就ok了哈~


有时也会收到比如“Your server software is being unfriendly”错误信息,提示服务器软件存在问题,这个故障一般是因为配置smbd时使用了错误的参数或者启用smbd时遇到的类似严重破坏错误,我们可以使用testparm来检查相应的配置文件并同时检查相关日志文件哈。

###########################################################