一、项目背景

  某公司有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程序及相关依赖包:

 [root@Fish ~]# yum -y install samba samba-client samba-common

2.查看Samba程序及相关依赖是否正确安装:

 [root@Fish ~]# rpm -qa | grep samba
samba-winbind-3.6.-.el6.x86_64
samba-common-3.6.-.el6.x86_64
samba-client-3.6.-.el6.x86_64
samba-winbind-clients-3.6.-.el6.x86_64
samba-3.6.-.el6.x86_64

3.创建共享资源相关目录:

 [root@Fish ~]# cd /usr/share/
[root@Fish share]# mkdir Samba-Share
[root@Fish share]# cd Samba-Share/
[root@Fish 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.添加相关用户组:

 [root@Fish Samba-Share]# groupadd system
[root@Fish Samba-Share]# groupadd develop
[root@Fish Samba-Share]# groupadd productdesign
[root@Fish Samba-Share]# groupadd test
[root@Fish Samba-Share]# groupadd develop_test

特别说明:develop_test组是用来管理develop组和test组的共享空间的组。

5.添加用户:

 [root@Fish Samba-Share]# useradd -g test -G develop_test -d /usr/share/Samba-Share/test/ -s /sbin/nologin test
[root@Fish Samba-Share]# useradd -g develop -G develop_test -d /usr/share/Samba-Share/develop -s /sbin/nologin develop
[root@Fish Samba-Share]# useradd -g productdesign -d /usr/share/Samba-Share/productdesign/ -s /sbin/nologin productdesign
[root@Fish 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用户(由于是在实验环境,方便起见密码既用户名):

 [root@Fish Samba-Share]# smbpasswd -a system
New SMB password:
Retype new SMB password:
Added user system.
[root@Fish Samba-Share]# smbpasswd -a develop
New SMB password:
Retype new SMB password:
Added user develop.
[root@Fish Samba-Share]# smbpasswd -a productdesign
New SMB password:
Retype new SMB password:
Added user productdesign.
[root@Fish Samba-Share]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.

7.配置共享目录的权限及相关归属:

 [root@Fish share]# chown system:system ./Samba-Share/
[root@Fish share]# cd Samba-Share/
[root@Fish Samba-Share]# chmod develop/ develop_testrw/ productdesign/ test/ temp/ library/
[root@Fish Samba-Share]# chown develop:system develop
[root@Fish Samba-Share]# chown productdesign:system productdesign/
[root@Fish Samba-Share]# chown test:system test/
[root@Fish Samba-Share]# chown system:system library/
[root@Fish Samba-Share]# chown system:develop_test develop_testrw/
[root@Fish Samba-Share]# chmod library/
[root@Fish Samba-Share]# chown system:system temp/
[root@Fish Samba-Share]# chmod temp/
[root@Fish Samba-Share]# chmod ../Samba-Share/

    8. Samba服务器配置文件配置:

备份Samba服务器默认的配置文件:

 [root@Fish Samba-Share]# cd /etc/samba/
[root@Fish samba]# cp ./smb.conf ./smb.conf.bak

在客户端查看当前工作站域(如下图,此项用于填写Samba服务端配置文件里workgroup选项),得知当前客户端工作站域为:WORKGROUP。

删除/etc/samb/smb.conf文件内所有内容,并重新编辑Samba服务器配置文件,结果如下:

 [root@Fish ~]# cat /etc/samba/smb.conf
[global]
server string = Samba Server Version %v
workgroup = WORKGROUP
netbios name = SambaServer
server string = CentOS6. Samba Server
security = share [system]
comment = systemadmin
path = /usr/share/Samba-Share
valid users = system
create mask =
directory mask =
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 =
directory mask =
writeable = yes
browseable = yes [develop]
path = /usr/share/Samba-Share/develop
valid users = develop,@system
create mask =
directory mask =
writeable = yes
browseable = yes [productdesign]
path = /usr/share/Samba-Share/productdesign
valid users = productdesign,@system
create mask =
directory mask =
writeable = yes
browseable = yes [test]
path = /usr/share/Samba-Share/test
valid users = test,@system
create mask =
directory mask =
writeable = yes
browseable = yes

    9.重启Samba服务,使配置文件生效:

 [root@Fish ~]# service smb restart

由于是在实验环境而并非生产环境,方便起见故关闭防火墙和SELinux:

 [root@Fish ~]# service iptables stop
[root@Fish ~]# setenforce

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://blog.csdn.net/xg38241415109/article/details/78933949

https://www.5yun.org/16911.html

最新文章

  1. 光盘 iso 镜像制作相关命令操作
  2. uname
  3. 使用ObjectAnimator设置动画
  4. Egret命令行小结
  5. 【POJ】3523 The Morning after Halloween
  6. IOS 如何选择delegate、notification、KVO?(转)
  7. dubbo注册服务IP解析异常及IP解析源码分析
  8. 使用Jekyll搭建免费的Github Pages个人博客
  9. jQuery遍历函数
  10. 【CentOS7】Could not retrieve mirrorlist http://mirrorlist.centos.org/?...
  11. 敏捷冲刺(Beta版本)
  12. ffdshow 源代码分析 2: 位图覆盖滤镜(对话框部分Dialog)
  13. pip "Cannot uninstall 'six'. It is a distutils installed project..." 解决方法
  14. Jira安装过程
  15. canvas 画线
  16. CocosCreator小栗子
  17. MFC 如何在一个类中使用在其他类中定义的变量或函数
  18. oracle:delete和truncate
  19. J2SE 8的编译
  20. SC review 5.2 设计可复用软件

热门文章

  1. GCE 部署 ELK 7.1可视化分析 nginx
  2. CentOS7.5安装GitLab及汉化
  3. Bilateral Multi-Perspective Matching for Natural Language Sentences---读书笔记
  4. Python绘制可爱的卡通人物 | 【turtle使用】
  5. TMS320C6455小介绍
  6. axios二次封装的几种方法
  7. java中类加载的全过程及内存图分析
  8. 洛谷 题解 P1352 【没有上司的舞会】
  9. Codeforces 718A Efim and Strange Grade 程序分析
  10. 【Python基础】12_Python中的容器类型公共方法