一, 项目背景
某公司有 system,develop,productdesign 和 test 等 4 个小组, 个人办公机操作系统为 Windows 2000/XP/2003, 少数开发人员采用 Linux 操作系统, 服务器操作系统为 RHEL 4, 需要设计一套建立再 RHEL 4 之上的安全文件共享方案. 每个用户都有自己的网络磁盘, develop 组到 test 组有共用的网络硬盘, 所有用户 (包括匿名用户) 有一个只读共享资料库; 所有用户 (包括匿名用户) 要有一个存放临时文件的文件夹.
项目目标:
System 组具有管理所有 Samba 空间的权限.
各部门的私有空间: 各小组拥有自己的空间, 除了小组成员及 system 组有权限以外, 其他用户不可访问(包括列表, 读和写).
资料库: 所有用户 (包括匿名用户) 都具有读权限而不具有写入数据的权限.
Develop 组与 test 组的共享空间, develop 组与 test 组之外的用户不能访问.
公共临时空间: 让所有用户可以读取, 写入, 删除.
二, 具体配置过程
P.S. 服务端系统: CentOS-6.6(2.6.32-754.11.1.el6.x86_64), 客户端系统: Windows10(1803).
1. 安装 Samba 程序及相关依赖包:
1 [[email protected] ~]# yum -y install samba samba-client samba-common
2. 查看 Samba 程序及相关依赖是否正确安装:
- [[email protected] ~]# rpm -qa | grep samba
- samba-winbind-3.6.23-51.el6.x86_64
- samba-common-3.6.23-51.el6.x86_64
- samba-client-3.6.23-51.el6.x86_64
- samba-winbind-clients-3.6.23-51.el6.x86_64
- samba-3.6.23-51.el6.x86_64
3. 创建共享资源相关目录:
- [[email protected] ~]# cd /usr/share/
- [[email protected] share]# mkdir Samba-Share
- [[email protected] share]# cd Samba-Share/
- [[email protected] Samba-Share]# mkdir develop productdesign test library develop_testrw temp
各目录说明如下:
/usr/share/Samba-Share:system 小组的主目录, 负责管理其下所有目录.
/usr/share/Samba-Share/develop:develop 小组的主目录, 除了小组本身和 system 小组之外, 其他小组都是不可读不可写.
/usr/share/Samba-Share/productdesign:productdesign 小组的主目录, 除了小组本身和 system 小组以外, 其他小组都是不可读不可写.
/usr/share/Samba-Share/test:test 小组的主目录, 除了小组本身和 system 小组以外, 其他小组都是不可读不可写.
/usr/share/Samba-Share/library: 资料库主目录, 所有小组只读(system 小组有权限写入).
/usr/share/Samba-Share/develop_testrw:develop 小组和 test 小组的共享空间, develop 小组与 test 小组之外的小组不能访问.
/usr/share/Samba-Share/temp: 所有小组的主目录(包括匿名用户), 所有小组可读可写.
4. 添加相关用户组:
- [[email protected] Samba-Share]# groupadd system
- [[email protected] Samba-Share]# groupadd develop
- [[email protected] Samba-Share]# groupadd productdesign
- [[email protected] Samba-Share]# groupadd test
- [[email protected] Samba-Share]# groupadd develop_test
特别说明: develop_test 组是用来管理 develop 组和 test 组的共享空间的组.
5. 添加用户:
- [[email protected] Samba-Share]# useradd -g test -G develop_test -d /usr/share/Samba-Share/test/ -s /sbin/nologin test
- [[email protected] Samba-Share]# useradd -g develop -G develop_test -d /usr/share/Samba-Share/develop -s /sbin/nologin develop
- [[email protected] Samba-Share]# useradd -g productdesign -d /usr/share/Samba-Share/productdesign/ -s /sbin/nologin productdesign
- [[email protected] Samba-Share]# useradd -g system -G system,develop,productdesign,test,develop_test -d /usr/share/Samba-Share/ -s /sbin/nologin system
特别说明:
(1).useradd 的 - g 参数是指定用户所属主组,-G 参数是指定用户所属附加组,-d 参数是指定用户登录时的家目录,-s 参数是指定用户登录时的 Shell.
(2). 对于 / sbin/nologin 这个特殊 Shell 的说明: 使用这个 Shell 的登录作业可以进行系统程序的工作, 但是无法登录主机, 保证了系统的安全性.
(3). 在执行上述命令时, 系统会做出如下反馈:
- useradd: warning: the home directory already exists.
- Not copying any file from skel directory into it.
这个原因是由于在添加用户前创建了其家目录而造成系统做出警告. 由于这是用于文件共享的资源目录, 并不需要用户的 shell 配置文件故不做影响.
6. 为实现文件共享而添加 Samba 用户(由于是在实验环境, 方便起见密码既用户名):
- [[email protected] Samba-Share]# smbpasswd -a system
- New SMB password:
- Retype new SMB password:
- Added user system.
- [[email protected] Samba-Share]# smbpasswd -a develop
- New SMB password:
- Retype new SMB password:
- Added user develop.
- [[email protected] Samba-Share]# smbpasswd -a productdesign
- New SMB password:
- Retype new SMB password:
- Added user productdesign.
- [[email protected] Samba-Share]# smbpasswd -a test
- New SMB password:
- Retype new SMB password:
- Added user test.
7. 配置共享目录的权限及相关归属:
- [[email protected] share]# chown system:system ./Samba-Share/
- [[email protected] share]# cd Samba-Share/
- [[email protected] Samba-Share]# chmod 2770 develop/ develop_testrw/ productdesign/ test/ temp/ library/
- [[email protected] Samba-Share]# chown develop:system develop
- [[email protected] Samba-Share]# chown productdesign:system productdesign/
- [[email protected] Samba-Share]# chown test:system test/
- [[email protected] Samba-Share]# chown system:system library/
- [[email protected] Samba-Share]# chown system:develop_test develop_testrw/
- [[email protected] Samba-Share]# chmod 755 library/
- [[email protected] Samba-Share]# chown system:system temp/
- [[email protected] Samba-Share]# chmod 777 temp/
- [[email protected] Samba-Share]# chmod 755 ../Samba-Share/
8.Samba 服务器配置文件配置:
备份 Samba 服务器默认的配置文件:
- [[email protected] Samba-Share]# cd /etc/samba/
- [[email protected] samba]# cp ./smb.conf ./smb.conf.bak
在客户端查看当前工作站域(如下图, 此项用于填写 Samba 服务端配置文件里 workgroup 选项), 得知当前客户端工作站域为: WORKGROUP.
删除 / etc/samb/smb.conf 文件内所有内容, 并重新编辑 Samba 服务器配置文件, 结果如下:
- [[email protected] ~]# cat /etc/samba/smb.conf
- [global]
- server string = Samba Server Version %v
- workgroup = WORKGROUP
- netbios name = SambaServer
- server string = CentOS6.6 Samba Server
- security = share
- [system]
- comment = systemadmin
- path = /usr/share/Samba-Share
- valid users = system
- create mask = 0664
- directory mask = 0775
- writeable = yes
- browseable = yes
- [library]
- path = /usr/share/Samba-Share/library
- writeable = no
- browseable = yes
- guest ok = yes
- [temp]
- path = /usr/share/Samba-Share/temp
- writeable = yes
- browseable = yes
- guest ok = yes
- [develop_testrw]
- path = /usr/share/Samba-Share/develop_testrw
- valid users = system,@develop_test
- create mask = 0664
- directory mask = 0775
- writeable = yes
- browseable = yes
- [develop]
- path = /usr/share/Samba-Share/develop
- valid users = develop,@system
- create mask = 0664
- directory mask = 075
- writeable = yes
- browseable = yes
- [productdesign]
- path = /usr/share/Samba-Share/productdesign
- valid users = productdesign,@system
- create mask = 0664
- directory mask = 075
- writeable = yes
- browseable = yes
- [test]
- path = /usr/share/Samba-Share/test
- valid users = test,@system
- create mask = 0664
- directory mask = 075
- writeable = yes
- browseable = yes
9. 重启 Samba 服务, 使配置文件生效:
1 [[email protected] ~]# service smb restart
由于是在实验环境而并非生产环境, 方便起见故关闭防火墙和 SELinux:
- [[email protected] ~]# service iptables stop
- [[email protected] ~]# setenforce 0
10. 客户端相关配置:
由于 Windows10 为了安全起见关闭了 SMB1.0/CIFS 文件共享支持, 因此需要在 "启用或关闭 Windows 功能" 选项框内重新勾选该选项, 如下图:
三, 实现结果
查询服务端和客户端各自的 IP 地址, 并确保两端能正常能正常通信. 如下图所示:
在客户端的 "文件资源管理器" 的 "网络" 选项中输入 "\\192.168.225.12\system", 即可连接到 Samba 服务器. 如下图(在这里先用 system 用户登录):
在弹出的对话框里输入 system 小组的用户名和密码. 如下图:
连接成功可以正常显示 Samba 服务器所共享的目录. 如下图:
现在断开连接, 使用 develop 账号登录. 按照要求, develop 可以访问 develop,develop_testrw,temp 这三个目录, 其余的目录均不能访问. 验证如下:
首先清除清除 Windows 网络保存的账号设置:
进行依次验证, 如下图:
使用 develop 账号在 temp 目录下创建文件, 并在服务端查看. 如下图:
至此, 该实验所需要求已经全部完成..
四, 额外说明
本博客参考了以下博客或站点:
https://www.5yun.org/16911.html
来源: http://www.bubuko.com/infodetail-3055833.html