【配置与管理Samba服务器2】

07-14 1798阅读

文章目录

  • Samba高级服务器配置
  • 一、用户账号映射
  • 二、客户端访问控制
    • 1.使用IP
    • 2.使用域名
    • 3.使用通配符
    • 4.hosts allow和hosts deny的作用范围
    • 三、设置Samba的权限
    • 四、Samba隐藏共享
    • 五、Samba服务器实用案例

      Samba高级服务器配置

      一、用户账号映射

      在前一部分提到可以访问的Samba服务器的账号必须对应一个同名的系统账号,因此只要知道Samba服务器的账号,就可以知道Linux的系统账号,这是非常危险的。因此为了保障Samba服务器的安全,引入虚拟账号,并建立Samba账号和虚拟账号之间的对应关系。客户端通过虚拟账号登录到Samba服务器。

      比如,将sale1账号分别映射为suser1和myuser1,将sale2账号映射为suser2。首先需要在主配置文件中添加账号映射的文件,然后在映射文件中添加Samba账号与虚拟账号之间的对应关系。

      # 在smb.conf中添[global]中添加username map字段,开启用户账号映射功能,也是映射所需的文件
      username map=/etc/samba/smbusers
      #在上面文件中添加Samba账号和虚拟账号之间的对应关系
      sale1=suser1 myuser1
      sale2=suser2
      #重启Samba服务
      [root@RHEL7-1 ~]  systemctl restart  smb
      

      二、客户端访问控制

      Samba服务器共享出来的目录,要禁止某个IP子网或某个域的客户端访问此资源,使用hosts allow和hosts deny字段实现此功能。

      1.使用IP

      对于共享目录/sales,禁止来自192.168.10.0/24网段的IP地址访问,但其中的192.168.10.30可以访问。

      # 修改smb.conf中的[sales]共享字段
      [sales]                    			#设置共享目录的共享名为sales
           comment=sales
           path=/sales	#设置共享目录的绝对路径
           hosts deny = 192.168.10.	 #禁止所有来自192.168.10.0/24网段的IP地址访问
           hosts allow = 192.168.10.30  #允许192.168.10.30这个IP地址访问
      #重启Samba服务
      [root@RHEL7-1 ~]  systemctl restart  smb
      

      2.使用域名

      公司Samba服务器上共享了一个目录public,公司规定.sale.com域和.net域的客户端不能访问,并且主机名为client1的客户端也不能访问。

      # 修改smb.conf中的[public]共享字段
      [public]
              comment=public's share
              path=/public
              hosts deny =  .sale.com  .net  client1
      #重启Samba服务
      [root@RHEL7-1 ~]  systemctl restart  smb
      

      3.使用通配符

      Samba服务器共享了一个目录security,规定除主机boss外的其他人不允许访问。

      修改smb.conf配置文件,使用通配符“ALL”来简化配置。

      # 修改smb.conf中的[security]共享字段
      [security]
              comment=security
              path=/security
              writable=yes
              hosts deny = ALL
              hosts allow = boss
      #重启Samba服务
      [root@RHEL7-1 ~]  systemctl restart  smb
      

      Samba服务器共享了一个目录security,只允许192.168.0.0网段的IP地址访问,但是192.168.0.100及192.168.0.200的主机禁止访问security。

      错误:hosts allow=192.168.0. hosts deny=192.168.0.100 192.168.0.200

      原因:当hosts allow和hosts deny冲突时,hosts allow优先,可以使用EXCEPT进行设置

      正确: hosts allow=192.168.0. EXCEPT 192.168.0.100 192.168.0.200

      # 修改smb.conf中的[security]共享字段
      [security]
              comment=security
              path=/security
              writable=yes
              hosts deny = ALL
              hosts allow =  192.168.0. EXCEPT 192.168.0.100 192.168.0.200
      #重启Samba服务
      [root@RHEL7-1 ~]  systemctl restart  smb
      

      4.hosts allow和hosts deny的作用范围

      [global]
              hosts deny = ALL
              hosts allow = 192.168.0.66      #只有192.168.0.66才可以访问Samba服务器
      [security]
              hosts deny = ALL
              hosts allow = 192.168.0.66        #只有192.168.0.66才可以访问security目录
      

      三、设置Samba的权限

      字段描述
      writableyes所有账号都允许写入
      writableno所有账号都禁止写入
      write list写入权限账号列表列表中的账号允许写入

      根据上面的参数可以实现对所有账号允许写入、禁止写入、部分成员允许写入的操作。

      公司Samba服务器上有个共享目录tech,公司规定只有boss账号和tech组的账号可以完全控制,其他人只有只读权限。

      [tech]
              comment=tech's data
              path=/tech
              write list =boss, @tech
      

      四、Samba隐藏共享

      使用browseable字段实现隐藏共享。

      例1:把Samba服务器上的技术部共享目录tech隐藏。

      [tech]
              comment=tech's data
              path=/tech
              write list =boss, @tech
              browseable = no
      

      例2:Samba服务器上有个tech目录,此目录只有boss用户可以浏览访问,其他人都不可以浏览和访问。

      分析:Samba的主配置文件只有一个,所有账号都要遵守该配置文件,如果browseable为yes,那么都可以浏览,如果为no,那么所有人都不可以浏览,不想上述的write list可以允许部分成员写入。为了对不同成员的浏览权限做区分,为不同需求的用户或组群分别建立相应的配置文件,并单独配置其隐藏功能。

      (1)建立共享文件和账户

      [root@RHEL7-1 ~]  mkdir /tech
      [root@RHEL7-1 ~]  useradd  boss
      [root@RHEL7-1 ~]  useradd  test1
      [root@RHEL7-1 ~]  passwd  boss
      [root@RHEL7-1 ~]  passwd  test1
      [root@RHEL7-1 ~]  smbpasswd  -a  boss
      [root@RHEL7-1 ~]  smbpasswd  -a  test1
      

      (2)建立独立配置文件

      可以直接对主配置文件smb.conf做一个copy,然后相应修改即可。

      [root@RHEL7-1 ~]  cd  /etc/samba/
      [root@RHEL7-1 ~]  cp  smb.conf  smb.conf.boss
      

      (3)编辑主配置文件smb.conf

      需要在global中指定boss账户对应的配置文件,有两种方式:

      config file:当以boss身份访问Samba服务器时,只能看到boss信息,其他在smb.conf中定义的共享资源无法看到。

      include:除了可以看到boss的信息,其他在smb.conf中定义的共享资源也可以看到。

      [global]
              config  file = /etc/samba/smb.conf.%U
      [tech]
              comment=tech's data
              path=/tech
              write list =boss, @tech
              browseable=no
      

      (4)编辑smb.conf.boss独立配置文件

      [tech]
              comment=tech's data
              path=/tech
              write list =boss, @tech
              browseable=yes
      

      (5)重启Samba服务

      #重启Samba服务
      [root@RHEL7-1 ~]  systemctl restart  smb
      

      五、Samba服务器实用案例

      1.Samba服务器目录

      公共目录/share,销售部/sales,技术部/tech。

      2.企业员工情况

      主管:总经理master;

      销售部:销售部经理mike,员工sky,员工jane

      技术部:技术部经理tom,员工sunny,员工bill

      公司使用Samba搭建文件服务器,需要建立公共共享目录,允许所有人访问,权限为只读。为销售部和技术部分别建立单独的目录,只允许总经理和对应部门员工访问,并且公司员工无法在网络邻居查看到非本部门的共享目录。

      分析:这一题中,用户可以分为三类,master、sales组和tech组。master总经理对/share可读,对/sales和/tech可读可写;sales组内的三个成员对/share可读,对/sales可读可写,对/tech不可以浏览;tech组内的三个成员对/share可读,对/tech可读可写,对/sales不可以浏览。由于这里涉及到browseable,不同用户的权限不一样,因此可以为每一类用户分别建立独立的配置文件,一共有4个配置文件,分别为smb.conf,master.smb.conf,sales.smb.conf和tech.smb.conf。

      主要过程如下:

      (1)建立三个目录

      [root@RHEL7-1 ~]   mkdir  /share
      [root@RHEL7-1 ~]   mkdir  /sales
      [root@RHEL7-1 ~]   mkdir  /tech
      

      (2)添加用户和组

      [root@RHEL7-1 ~]   groupadd  sales
      [root@RHEL7-1 ~]   groupadd  tech
      [root@RHEL7-1 ~]   useradd  master
      [root@RHEL7-1 ~]   useradd  -g  sales  mike
      [root@RHEL7-1 ~]   useradd  -g  sales  sky
      [root@RHEL7-1 ~]   useradd  -g  sales  jane
      [root@RHEL7-1 ~]   useradd  -g  tech  tom
      [root@RHEL7-1 ~]   useradd  -g  tech  sunny
      [root@RHEL7-1 ~]   useradd  -g  tech  bill
      [root@RHEL7-1 ~]   passwd   master
      [root@RHEL7-1 ~]   passwd   mike
      [root@RHEL7-1 ~]   passwd   sky
      [root@RHEL7-1 ~]   passwd   jane
      [root@RHEL7-1 ~]   passwd   tom
      [root@RHEL7-1 ~]   passwd   sunny
      [root@RHEL7-1 ~]   passwd   bill
      

      (3)添加相应Samba账户

      [root@RHEL7-1 ~]  smbpasswd  -a master
      [root@RHEL7-1 ~]  smbpasswd  -a mike
      [root@RHEL7-1 ~]  smbpasswd  -a sky
      [root@RHEL7-1 ~]  smbpasswd  -a jane
      [root@RHEL7-1 ~]  smbpasswd  -a tom
      [root@RHEL7-1 ~]  smbpasswd  -a sunny
      [root@RHEL7-1 ~]  smbpasswd  -a bill
      

      (4)设置共享目录本地权限

      [root@RHEL7-1 ~]  chmod  777  /share
      [root@RHEL7-1 ~]  chmod  777  /sales
      [root@RHEL7-1 ~]  chmod  777  /tech
      

      (5)设置SELinux和防火墙

      #查看当前SELinux模式
      getenforce
      -->Enforcing # 为强制模式
      #修改SELinux为宽容模式
      setenforce Permissive
      #关闭防火墙
      firewall-cmd --permanent --add-service=samba
      -->success
      firewall-cmd –reload		#重新加载防火墙
      firewall-cmd --list-all  #查看
      -->
      public (active)
        target: default
        icmp-block-inversion: no
        interfaces: ens33
        sources: 
        services: ssh dhcpv6-client samba	#已经加入到防火墙的允许服务
        ports: 
        protocols: 
        masquerade: no
        forward-ports: 
        source-ports: 
        icmp-blocks: 
        rich rules:
      

      (6)建立独立配置文件

      [root@RHEL7-1 ~]   cd  /etc/samba
      [root@RHEL7-1 samba]   cp  smb.conf  master.smb.conf
      [root@RHEL7-1 samba]   cp  smb.conf  sales.smb.conf
      [root@RHEL7-1 samba]   cp  smb.conf  tech.smb.conf
      

      (7)编辑主配置文件smb.conf

      [global]
      	workgroup = SAMBA
      	security = user
      	passdb backend = tdbsam
      	include=/etc/samba/%U.smb.conf
      	include=/etc/samba/%G.smb.conf
      [public]
      	comment=public
      	path=/share
      	guest ok=yes
      	public=yes
      	browseable=yes
      	read only=yes
      [sales]
      	comment=sales
      	path=/sales
      #	browseable=no
      [tech]
      	comment=tech
      	path=/tech
      #	browseable=no
      

      (8)编辑总经理master的配置文件master.smb.conf

      [global]
      	workgroup = SAMBA
      	security = user
      	passdb backend = tdbsam
      [public]
      	comment=public
      	path=/share
      	guest ok=yes
      	public=yes
      	browseable=yes
      	read only=yes
      [sales]
      	comment=sales
      	path=/sales
      	browseable=yes
      	writable=yes
      	valid users=master
      [tech]
      	comment=tech
      	path=/tech
      	browseable=yes
      	writable=yes
      	valid users=master
      

      (9)编辑销售组sales的配置文件sales.smb.conf

      [global]
      	workgroup = SAMBA
      	security = user
      	passdb backend = tdbsam
      [public]
      	comment=public
      	path=/share
      	guest ok=yes
      	public=yes
      	browseable=yes
      	read only=yes
      [sales]
      	comment=sales
      	path=/sales
      	browseable=yes
      	writable=yes
      	valid users=@sales,master
      [tech]
      	comment=tech
      	path=/tech
      	browseable=no
      

      (10)编辑技术组tech的配置文件tech.smb.conf

      [global]
      	workgroup = SAMBA
      	security = user
      	passdb backend = tdbsam
      [public]
      	comment=public
      	path=/share
      	guest ok=yes
      	public=yes
      	browseable=yes
      	read only=yes
      [sales]
      	comment=sales
      	path=/sales
      	browseable=no
      [tech]
      	comment=tech
      	path=/tech
      	browseable=yes
      	writable=yes
      	valid users=@tech,master
      

      (11)测试

      Samba服务器:192.168.163.10

      Linux客户端:192.168.163.100

      ①对总经理master测试

      1)master访问Samba服务器

      【配置与管理Samba服务器2】

      2)master访问public,并尝试在共享目录内创建文件

      【配置与管理Samba服务器2】

      3)master访问sales,并在/sales内创建目录

      【配置与管理Samba服务器2】

      4)master访问tech,并在/tech内创建目录

      【配置与管理Samba服务器2】

      ②对销售部sales测试

      用组内成员mike测试

      1)mike访问Samba服务器

      【配置与管理Samba服务器2】

      2)mike访问public,并尝试在共享目录内创建文件

      【配置与管理Samba服务器2】

      3)mike访问sales,并在/sales内创建目录

      【配置与管理Samba服务器2】

      4)mike访问tech,并在/tech内创建目录

      【配置与管理Samba服务器2】

      ③对技术部tech测试

      用组内成员tom测试

      1)tom访问Samba服务器

      【配置与管理Samba服务器2】

      2)tom访问public,并尝试在共享目录内创建文件

      【配置与管理Samba服务器2】

      3)tom访问sales,并在/sales内创建目录

      【配置与管理Samba服务器2】

      4)tom访问tech,并在/tech内创建目录

      【配置与管理Samba服务器2】

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]