综合项目(企业文件服务器)
项目背景
你是某公司的网络管理员,公司的一台刀片服务器运行RHEL8。公司大部分员工的桌面电脑运行Windows。请按照企业需求配置文件服务器。
项目要求
所有员工都能够在公司内流动办公,但不管在哪电脑上工作,都要把自己文件存在Samba文件服器上。
制造部、财务部、管理部,都有各自的文件目录。
各部门目录下提供“对外”、“公共”、“受控”三个子目录。
对外
- <1>允许公司所有工作人员访问,不能修改文件。
- <2>本部门文员负责维护数据
公共
- <1>本部门员工可以访问,领导层可以访问,不能修改。
- <2>本部门文员负责维护数据
受控
- <1>本部门主管、公司领导可以访问、其他员工禁止。
- <2>本部门主管负责维护数据
注:财务部受控文档只允许总经理、财务部总监、主管、访问。管理部受控文档只允许总经理、主管访问。
- 各部门办公人员拥有各自的主目录,用于存放私有文档(工作相关),其他人禁止访问。
- 所有用户都不允许使用服务器的shell(安全考虑)
公共区:
- 所有员工均可访问
- 网络部负责维护
交换区:
- 所有员工均可读可写,禁止删除其他员工文件。
- 网络部负责维护
项目分析
- 需要安装Samba作为文件服务器
- 为各部门创建相关目录,用户默认存在一个home目录
- 为所有用户创建Samba账号,建立账号时,不分配shell
- 设置共享权限,文件系统权限,结合ACL工具
- 设置SELinux、firewalld
项目实施(根目录/DocRoot)
目录结构
/DocRoot/
├── 财务部
│ ├── 对外
│ ├── 公共
│ └── 受控
├── 公共区
├── 管理部
│ ├── 对外
│ ├── 公共
│ └── 受控
├── 交换区
│ └── glb01.txt
└── 制造部
├── 对外
├── 公共
└── 受控
用户账号情况
管理部(glb) : glb01(主管)、glb02(文员)、glb03(普通员工)
财务部(cwb): cwb01(主管)、cwb02(文员)、cwb03(普通员工)
制造部(zzb): zzb01(主管)、zzb02(文员)、zzb03(普通员工)
网络部(netb): netb01(主管)、netb02(网管)
领导层(leader) : leader01(总经理)、leader02(副总经理)、leader03(财务总监)
拓展:配置服务环境
相关服务配置
systemctl start smb.service
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验证