前言

  • 本篇文章直接使用实例讲解,所以不会过多讲述概念性的知识,基本上都是 Samba 的一些基础配置,内容主要包括 Samba 的安装以及用户权限的配置,接下来我开始本次教程吧。

开始

实例项目背景(需求)

  • 某公司需要在内网搭建一个存储服务器,以供企业 行政部财务部技术部商务部 四个部门的员工使用,使用需求如下:
    一共有 行政部财务部技术部商务部共享软件 五个文件夹,五个文件夹的要求如下:
    1. 行政部财务部技术部商务部 四个部门的员工账号,互相独立,只能访问自己部门的文件夹,且拥有 执行 权限。
    2. 四个部门所有员工都能访问 共享软件 文件夹,但是只有 执行 权限。
    3. 技术部 文件夹下分别有 1组2组3组 三个文件夹分别给三个组的员工使用,要求每个组的员工只能访问自己组的文件夹,但是技术部的主管可以访问所有租的文件夹。
    4. 所有文件夹都使用垃圾站回收,防止用户误删文件。
    5. 管理员对 共享软件 文件夹有 执行 权限。

用户划分

  • 根据上述的需求可以发现不同的部门员工有着不同的权限,就算同一个部门也会有不同的权限,因此可以可视化表格如下:
    用户名 身份 所属组 授权目录
    xingzheng1 行政部员工 xingzheng1,xingzheng 行政部、共享软件
    caiwu1 财务部员工 caiwu1,caiwu 财务部、共享软件
    jishu1 技术部员工 jishu1,jishu 技术部、1组、共享软件
    jishu2 技术部员工 jishu2,jishu 技术部、2组、共享软件
    jishu3 技术部员工 jishu3,jishu 技术部、3组、共享软件
    jishuzhuguan 行政部主管 jishuzhuguan,jishu 技术部、1组、2组、3组、共享软件
    shangwu1 商务部员工 shangwu1,shangwu 商务部、共享软件
    admin 管理员 admin 共享软件

配置

  • 本次教程的服务器是一台安装 Centos7.6 的Linux服务器。
  1. 安装Samba服务
    SSH登录服务器后输入如下命令:

    yum -y install samba samba-client
    yum -y install vim
    # 安装vim软件,方便后续修改文件

    安装

  2. 关闭 Selinux
    输入如下命令打开配置文件:

    vim /etc/selinux/config

    找到 SELINUX=enforcing 并修改为 SELINUX=disabled ,修改完成,按 esc 键,再按 : 键,输入 wq 按回车键保存并退出,然后输入 reboot 重启系统,生效Selinux设置。
    修改Selinux

  3. 按需求创建目录

    • 在根目录 / 下创建一个 samba_data 目录,然后把所有部门的目录都创建在 samba_data 下。
      输入如下命令创建:
      cd /
      # 切换到根目录
      mkdir /samba_data
      # 在根目录下创建samba_data目录
      cd /samba_data
      # 切换到samba_data目录
      mkdir xingzhengbu caiwubu jishubu shangwubu soft
      # 在samba_data目录下创建xingzhengbu、caiwubu、jishubu、shangwubu、soft五个目录
      cd jishubu
      # 切换到jishubu目录
      mkdir group1 group2 group3
      # 在jishubu目录下创建 group1、group2、group3三个目录
      创建目录
      目录
    • 创建回收站目录,用于存放samba中被删除的文件,防止用户误删除导致找不到文件。
      输入如下命令:
      cd /
      # 切换到根目录
      mkdir /data_trash
      # 在根目录下创建data_trash目录
      chmod 777 /data_trash
      # 更改data_trash目录权限为777
      创建回收站
  4. 按需求创建用户和用户组

    • 输入如下命令创建用户和用户组:
      useradd -s /sbin/nologin xingzheng1
      useradd -s /sbin/nologin caiwu1
      useradd -s /sbin/nologin jishu1
      useradd -s /sbin/nologin jishu2
      useradd -s /sbin/nologin jishu3
      useradd -s /sbin/nologin jishuzhuguan
      useradd -s /sbin/nologin shangwu1
      useradd -s /sbin/nologin admin
      # 创建各个用户,其中 -s /sbin/nologin 是为了防止这些用户通过samba账号登录服务器
      groupadd xingzheng
      groupadd caiwu
      groupadd jishu
      groupadd shangwu
      groupadd group1
      groupadd group2
      groupadd group3
      # 创建对应文件夹的用户组
      创建用户和用户组
    • 为每个创建的Samba用户设置密码,命令如下:
      教程以测试为主,所有samba用户密码均设置弱密码:123456
      smbpasswd -a xingzheng1
      smbpasswd -a caiwu1
      smbpasswd -a jishu1
      smbpasswd -a jishu2
      smbpasswd -a jishu3
      smbpasswd -a jishuzhuguan
      smbpasswd -a shangwu1
      smbpasswd -a admin
      # 每个命令输入后都会要求输入密码
      设置samba用户密码
  5. 修改各个目录所属组
    目前各个目录所属组还是 root ,需要修改为各个部门所属组。
    目录所属组
    输入如下命令:

    cd /samba_data
    # 切换到根目录下的samba_data目录
    chown root.xingzheng xingzhengbu
    chown root.caiwu caiwubu
    chown root.jishu jishubu
    chown root.shangwu shangwubu
    # 修改各个部门对应的目录所属组为对应的部门
    cd jishubu
    # 切换到samba_data目录下的jishubu目录
    chown root.group1 group1
    chown root.group2 group2
    chown root.group3 group3
    # 修改jishubu目录下三个组的目录对应的所属组

    修改所属组
    所属组修改成功

  6. 修改目录权限
    输入如下命令:

    chmod 777 /samba_data/soft
    #修改共享软件(soft)目录的权限为 777
    chmod 770 /samba_data/jishubu/group1
    chmod 770 /samba_data/jishubu/group2
    chmod 770 /samba_data/jishubu/group3
    # 修改技术部各组的目录权限为 770

    修改权限

  7. 配置Samba主配置文件
    输入如下命令:

    cd /etc/samba
    # 切换到samba目录
    cp smb.conf smb.conf.bak
    # 复制smb.conf文件并另存为smb.conf.bak文件
    vim smb.conf
    # 编辑smb.conf文件

    修改如下图所示:
    samba配置设置1

    cups options = raw 后添加如下图所示内容开启全局垃圾站回收:
    垃圾站回收设置

    recycle:exclude = *.tmp|*.TMP 后添加如下图所示内容设置各个文件目录:
    samba配置设置2

    完成上述步骤后,按 esc 键,再按 : 键,输入 wq 按回车键保存并退出。

  8. 启动Samba服务并设置Samba服务器的自启动。
    输入如下命令:

    systemctl start smb.service
    # 启动Samba服务
    systemctl enable smb.service
    # 设置Samba服务开机自启动
  9. 防火墙设置方通Samba服务
    输入如下命令:

    firewall-cmd --permanent --zone=public --add-service=samba
    # 放行Samba服务
    firewall-cmd --reload
    # 设重启防火墙

    验证

  10. 用户 admin 只能进入 共享软件(soft) 目录,且能写文件进去;其它目录均不能访问.
    访问财务部被拒绝,其他行政部、技术部、商务部也是被拒绝。
    验证1

    共享软件(soft) 目录能够访问,并且能够存放和删除文件。
    验证2
    验证3
    验证4

    删除的文件也成功放到回收站。
    验证5

  11. 用户 jishu1 能进入技术部的 group1 文件夹对文件 读、写、执行 ,但是不能进入 group2group3 还有 行政部、商务部 文件夹,能够访问 共享软件(soft) 文件夹读取执行里面的文件,但是不能删除文件。
    先给用户 jishu1 授权进入 group1 ,命令如下:

    usermod -a -G jishu jishu1
    # 添加用户jishu1到组jishu里
    usermod -a -G group1 jishu1
    # 添加用户jishu1到组group1里
    systemctl restart smb
    # 重启smb服务

    验证6
    验证7
    验证8
    验证9

  12. 用户 jishuzhuguan 能进入技术部所有的文件夹,并且对技术部的所有减价都能进行管理,拥有 读、写、执行 权限。
    先给用户 jishuzhuguan 授权,命令如下:

    usermod -a -G jishu jishuzhuguan
    # 添加用户jishuzhuguan到组jishu里
    usermod -a -G group1 jishuzhuguan
    # 添加用户jishuzhuguan到组group1里
    usermod -a -G group2 jishuzhuguan
    # 添加用户jishuzhuguan到组group2里
    usermod -a -G group3 jishuzhuguan
    # 添加用户jishuzhuguan到组group3里
    systemctl restart smb
    # 重启smb服务

    验证10
    验证11
    验证12
    验证13
    同样,用户 jishuzhuguan 有权限能进入 共享软件(soft) 并且有 读、执行 权限,但没有 权限,不能放入或者删除文件夹里的文件。

总结

  1. 配置Samba,需要提前确认需求,例如需要什么目录以及各个用户权限如何。
  2. 一般遇到Samba无法访问的时候,很多时候不会是Samba配置错误,而是Linux本身的权限限制,例如Selinux是否关闭,防火墙是否开启、放通对应的策略和端口等等。
  3. 关于验证权限是否设置成功,建议给所有权限,然后逐个测试,再进一步针对需求进行限制。

最后

  • 关于如何在 Centos7 上配置Samba以及如何对用户权限设置就到这里了,总体还是要根据实际情况来搞。
  • 祝大家配置成功,并且学习到了如何设置,再见👋。

如有问题请点击邮件或在底下评论与我联系