1 企业环境及需求 
服务器环境:RHEL5.1
samba
服务器目录:

企业数据目录:/companydata
公共目录:
/companydata/share
销售部目录:
/companydata/sales
技术部:/companydata/tech
企业员工情况:
经理:manager
销售部:销售部经理 king、员工 sky、员工 jay.......
技术部:技术部经理 kyhack、员工 bill、员工 kai ....
 
2 需求分析
对于建立公共目录public字段就可以实现匿名访问,员工只能访问本部门的共享目录,禁止访问非本部门的共享目录,我们可以通过设置目录共享字段“browseable = no”及字段“valid users”来实现其隐藏功能和相应的访问权限。这样设置不能很好得解决同一目录多种需求的权限设置,所以我们需要建立独立配置文件,为每个部门建立一个组后并为每个组建立配置文件来实现隔离用户权限会比较灵活。

3 解决方案
1)建立各部门专用共享目录
使用mkdir建立需求的共享目录以便分门别类的存储相应资料。
[root@rhel5 ~]# mkdir /companydata
[root@rhel5 ~]# mkdir /companydata/share
[root@rhel5 ~]# mkdir /companydata/sales
[root@rhel5 ~]# mkdir /companydata/tech
[root@rhel5 ~]# chmod -R 777 /companydata/     //设置共享目录权限
 
2)添加samba服务器描述及设置smbpasswd文件
workgroup = worgroup     //设置工作组
server string = Company Samba File Server    //服务器描述
#passdb backend = tdbsam    //注释掉,为了指定Samba用户验证
smb passwd file = /etc/samba/smbpasswd    //添加这一条,指定samba密码存放位置
默认/etc/samba/目录下没有smbpasswd文件,我们要先关闭sambatdbsam验证。再加上这一条smb passwd file = /etc/samba/smbpasswd,然后保存退出。

3)添加用户和组
为各个部门建立相应的组,先建立销售部组sales,技术部组tech,然后用useradd命令添加总经理帐号manager及各个员工的帐号并加入相应的用户组。
[root@rhel5 ~]# groupadd sales
[root@rhel5 ~]# groupadd tech     //添加组
[root@rhel5 ~]# useradd manager
[root@rhel5 ~]# useradd -g sales king
[root@rhel5 ~]# useradd -g sales sky
[root@rhel5 ~]# useradd -g sales jay
[root@rhel5 ~]# useradd -g tech kyhack
[root@rhel5 ~]# useradd -g tech bill
[root@rhel5 ~]# useradd -g tech kai     //添加用户并加到相应的组
 
[root@rhel5 ~]# smbpasswd -a king
New SMB password:
Retype new SMB password:
Added user king.
[root@rhel5 ~]# smbpasswd -a sky
New SMB password:
Retype new SMB password:
Added user sky. ……………… //添加samba 用户

4)配置smb.conf文件
1)建立单独配置文件
用户配置文件使用用户名命令哈,组配置文件使用组名命令。
[root@rhel5 samba]# ls
manager.smb.comf  passdb.tdb      secrets.tdb  smbpasswd  tech.smb.conf
lmhosts      sales.smb.comf  smb.conf     smbusers

2)设置主配置文件smb.conf
这里我们配置smb.conf主配置文件,在global中添加相应字段哈,确保samba服务器的主配置文件可以调用独立的用户配置文件和组配置文件。
workgroup = workgroup
  server string = company samba file server
  include = /etc/samba/%U.smb.conf    //加载/etc/samba目录下格式为用户名.smb.conf”的配置文件
  include = /etc/samba/%G.smb.conf    //加载/etc/samba目录下格式为组名.smb.conf”的配置文件

[public]
   comment = company share
   path = /companydata/share
   public = yes

5)设置总经理manager配置文件
vim /etc/samba/manager.smb.conf
[sales]
    comment = sales data
    path = /companydata/sales
    writable = yes
    valid users = manager
 
[tech]
    comment = tech tata
    path = /companydata/tech
    writable =yes
    valid users = manager

6)设置销售部组sales配置文件
vim /etc/samba/sales.smb.conf
[sales]
    comment = sales data
    path = /companydata/sales
    writable = yes
    valid users = @sales ,manager    #设置访问组

7)设置技术部组tech配置文件
vim /etc/samba/tech.smb.conf
[tech]
   comment = company tech
   path = /companydata/tech
   writable =yes
   valid users = @tech,manager
8)开启samba服务
service smb start
 
本文参考:王乾的第2季 Samba服务全攻略