综合项目(企业文件服务器)

项目背景

你是某公司的网络管理员,公司的一台刀片服务器运行RHEL8。公司大部分员工的桌面电脑运行Windows。请按照企业需求配置文件服务器。

项目要求

  1. 所有员工都能够在公司内流动办公,但不管在哪电脑上工作,都要把自己文件存在Samba文件服器上。

  2. 制造部、财务部、管理部,都有各自的文件目录。

  3. 各部门目录下提供“对外”、“公共”、“受控”三个子目录。

对外

  • <1>允许公司所有工作人员访问,不能修改文件。
  • <2>本部门文员负责维护数据

公共

  • <1>本部门员工可以访问,领导层可以访问,不能修改。
  • <2>本部门文员负责维护数据

受控

  • <1>本部门主管、公司领导可以访问、其他员工禁止。
  • <2>本部门主管负责维护数据

注:财务部受控文档只允许总经理、财务部总监、主管、访问。管理部受控文档只允许总经理、主管访问。

  1. 各部门办公人员拥有各自的主目录,用于存放私有文档(工作相关),其他人禁止访问。
  2. 所有用户都不允许使用服务器的shell(安全考虑)
  3. 公共区:

    • 所有员工均可访问
    • 网络部负责维护
  4. 交换区:

    • 所有员工均可读可写,禁止删除其他员工文件。
    • 网络部负责维护

项目分析

  1. 需要安装Samba作为文件服务器
  2. 为各部门创建相关目录,用户默认存在一个home目录
  3. 为所有用户创建Samba账号,建立账号时,不分配shell
  4. 设置共享权限,文件系统权限,结合ACL工具
  5. 设置SELinux、firewalld

项目实施(根目录/DocRoot)

目录结构

  1. /DocRoot/
  2. ├── 财务部
  3. ├── 对外
  4. ├── 公共
  5. └── 受控
  6. ├── 公共区
  7. ├── 管理部
  8. ├── 对外
  9. ├── 公共
  10. └── 受控
  11. ├── 交换区
  12. └── glb01.txt
  13. └── 制造部
  14. ├── 对外
  15. ├── 公共
  16. └── 受控

用户账号情况

管理部(glb) : glb01(主管)、glb02(文员)、glb03(普通员工)

财务部(cwb): cwb01(主管)、cwb02(文员)、cwb03(普通员工)

制造部(zzb): zzb01(主管)、zzb02(文员)、zzb03(普通员工)

网络部(netb): netb01(主管)、netb02(网管)

领导层(leader) : leader01(总经理)、leader02(副总经理)、leader03(财务总监)

拓展:配置服务环境

相关服务配置

  1. systemctl start smb.service
  2. systemctl enable smb.service

防火墙配置

firewall-cmd --add-service=samba --permanent
firewall-cmd --reload

SELinux配置

chcon -R -t samba_share_t /myshare
setsebool -P samba_enable_home_dirs on  (-P表示永久生效)

完整步骤

#!/bin/bash

# 安装并启动samba
dnf install -y samba
dnf install -y samba-client
systemctl enable --now smb

# 配置samba配置文件
echo -e "[公司文档]\n\tpath = /DocRoot \n\twritable = yes \n\tpublic = yes" >> /etc/samba/smb.conf

# 创建目录
mkdir /DocRoot/{管理部,财务部,制造部}/{对外,公共,受控} -p
mkdir /DocRoot/{公共区,交换区}

# 创建组和用户
for group in zzb glb cwb leader netb
do
    groupadd ${group}
    for user in {1..3}
    do 
        useradd -s /sbin/nologin -g ${group} ${group}0${user}
        echo -e "123\n123" | smbpasswd -a  ${group}0${user}
    done
done

# 根目录
root_doc="/DocRoot"

# 公共区和交换区权限
chmod 755 ${root_doc}/公共区
chown :netb ${root_doc}/公共区
chmod 777 ${root_doc}/交换区
chmod o+t ${root_doc}/交换区
chown :netb ${root_doc}/交换区

# 制造部权限
chmod 700 ${root_doc}/制造部/受控
chown zzb01:zzb ${root_doc}/制造部/受控
setfacl -m g:leader:rx ${root_doc}/制造部/受控
chown zzb02:zzb ${root_doc}/制造部/对外
chmod 755 ${root_doc}/制造部/对外
chown zzb02:zzb ${root_doc}/制造部/公共
chmod 750 ${root_doc}/制造部/公共

# 管理部权限
chmod 700 ${root_doc}/管理部/受控
chown glb01:glb ${root_doc}/管理部/受控
setfacl -m u:leader01:rx ${root_doc}/管理部/受控
chown glb02:glb ${root_doc}/管理部/对外
chmod 755 ${root_doc}/管理部/对外
chown glb02:glb ${root_doc}/管理部/公共
chmod 750 ${root_doc}/管理部/公共

# 财务部权限
chmod 700 ${root_doc}/财务部/受控
chown cwb01:cwb ${root_doc}/财务部/受控
setfacl -m u:leader01:rx ${root_doc}/财务部/受控
setfacl -m u:leader03:rx ${root_doc}/财务部/受控
chown cwb02:cwb ${root_doc}/财务部/对外
chmod 755 ${root_doc}/财务部/对外
chown cwb02:cwb ${root_doc}/财务部/公共
chmod 750 ${root_doc}/财务部/公共

# 安装semanage工具包
dnf install -y policycoreutils-python-utils-2.8-16.1.el8.noarch

# 配置防火墙
firewall-cmd --add-service=samba --permanent
firewall-cmd --reload

# 配置selinux
semanage fcontext -a -t samba_share_t "/DocRoot(/.*)?"
restorecon -Rv /DocRoot
setsebool samba_enable_home_dirs on

打开windows进入\IP验证