CentOS8.5.2111(6)冬日阳光下跳一曲桑巴--SAMBA共享存储
一. 实验目的
1. 掌握Linux与Windows的资源共享和互访方法
2. 掌握Samba服务器安装和配置方法
3. 掌握Samba共享用户认证方法
二.实验背景
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能,是Windows和类Unix系统之间共享文件的一种协议。客户端主要是Windows,支持多节点同时挂载以及并发写入,主要用于windows和Linux下的文件共享、打印共享,实现匿名与本地用户的文件共享。CIFS是实现文件共享服务的一种文件系统,主要用于实现Windows系统中的文件共享,Linux系统中用的比较少,一般Linux系统中利用CIFS文件系统实现文件共享,需要安装Samba服务。它使程序可以访问远程Internet计算机上的文件,并要求此计算机提供服务。CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议,如文件传输协议和超文本传输协议的一个实现。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
实验背景:
CQIE有有5个大部门,分别为:人事行政部(HR & Admin Dept)、财务部(Financial Management Dept)、技术支持部(Technical Support Dept)、项目部(Project Dept)、客服部(Customer Service Dept),办公要实现不同的用户访问同一个共享目录具有不同的权限,便于管理和维护。基本上能满足一些企业用户的需求。
实验拓扑:
图6- 1
存储部2担任Samba存储服务器,其他机器充当客户端。
三. 实验目标
1. 各部门的文件夹只允许本部门员工有权访问;各部门之间交流性质的文件放到公用文件夹中。
2. 每个部门都有一个管理本部门文件夹的管理员账号和一个只能新建和查看文件的普通用户权限的账号。
3. 公用文件夹中分为存放工具的文件夹和存放各部门共享文件的文件夹。
4. 对于各部门自己的文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。不是本部门用户不能访问本部门文件夹。
5. 对于公用文件夹中的各部门共享文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。本部门用户(包括管理员和普通用户)在访问其他部门共享文件夹时,只能查看不能修改删除新建。对于存放工具的文件夹,只有管理员有权限,其他用户只能访问。
四.实验环境
CentOS8.5.2111、Win10、Vmware workstations 16、MobaXterm
四. 实验步骤
0.准备工作
在samba服务器上添加磁盘
图6- 2
图6- 3
安装磁盘工具:
[root@samba ~]# yum install -y mdadm CentOS-8.5.2111 - Base - mirrors.aliyun.com 262 B/s | 3.9 kB 00:15 …… 已安装: mdadm-4.2-rc2.el8.x86_64 完毕! |
准备磁盘空间
[root@samba ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 99G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 98G 0 part ├─cl-root 253:0 0 61.2G 0 lvm / ├─cl-swap 253:1 0 6.9G 0 lvm [SWAP] └─cl-home 253:2 0 29.9G 0 lvm /home sdb 8:16 0 80G 0 disk sr0 11:0 1 1024M 0 rom [root@samba ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.32.1)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 设备不包含可识别的分区表。 创建了一个磁盘标识符为 0xfcca72cf 的新 DOS 磁盘标签。 命令(输入 m 获取帮助):n 分区类型 p 主分区 (0个主分区,0个扩展分区,4空闲) e 扩展分区 (逻辑分区容器) 选择 (默认 p): 将使用默认回应 p。 分区号 (1-4, 默认 1): 第一个扇区 (2048-167772159, 默认 2048): 上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-167772159, 默认 167772159): +10G 创建了一个新分区 1,类型为“Linux”,大小为 10 GiB。 命令(输入 m 获取帮助):n 分区类型 p 主分区 (1个主分区,0个扩展分区,3空闲) e 扩展分区 (逻辑分区容器) 选择 (默认 p): 将使用默认回应 p。 分区号 (2-4, 默认 2): 第一个扇区 (20973568-167772159, 默认 20973568): 上个扇区,+sectors 或 +size{K,M,G,T,P} (20973568-167772159, 默认 167772159): +10G 创建了一个新分区 2,类型为“Linux”,大小为 10 GiB。 命令(输入 m 获取帮助):w 分区表已调整。 将调用 ioctl() 来重新读分区表。 正在同步磁盘。 [root@samba ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 99G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 98G 0 part ├─cl-root 253:0 0 61.2G 0 lvm / ├─cl-swap 253:1 0 6.9G 0 lvm [SWAP] └─cl-home 253:2 0 29.9G 0 lvm /home sdb 8:16 0 80G 0 disk ├─sdb1 8:17 0 10G 0 part └─sdb2 8:18 0 10G 0 part sr0 11:0 1 1024M 0 rom |
格式化
[root@samba ~]# mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@samba ~]# mkfs.xfs /dev/sdb2 meta-data=/dev/sdb2 isize=512 agcount=4, agsize=655360 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=2621440, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 |
1.规划
根据CQIE公司需求情况,现做出如下规划:
1)在系统分区时单独分一个CQIE的区,在该区下有以下几个文件夹:HR、 FM、TS、PRO、CS和Share。在Share下又有以下几个文件夹:HR、FM、TS、PRO、CS和Tools。
2)各部门对应的文件夹由各部门自己管理,Tools文件夹由管理员维护。
3)人资HR管理员账号:hradmin;普通用户账号:hruser。
财务FM管理员账号:fmadmin;普通用户账号:fmuser。
技术TS管理员账号:tsadmin;普通用户账号:tsuser。
项目PRO管理员账号:proadmin;普通用户账号:prouser。
客服CS管理员账号:csadmin;普通用户账号:csuser。
运管Tools管理员账号:admin。
文件夹之间的关系见下图:
图6- 4
c. 新建用户
表6-1新建组/用户规划
组名称 | 用户 | ||
HR | hramin | ||
hruser | |||
FM | fmamin | ||
fmuser | |||
TS | tsamin | ||
tsuser | |||
PRO | proamin | ||
prouser | |||
CS | csamin | ||
csuser | |||
admin | admin |
2.配置
0)服务器和客户端安装工具
yum -y install chrony cifs-* samba-client samba-common samba |
1)新建账户
使用useradd命令新建系统账户,然后再使用smbpasswd –a建立SMB账户。
[root@samba ~]# useradd -s /sbin/nologin hradmin [root@samba ~]# useradd -g hradmin -s /sbin/nologin hruser [root@samba ~]# useradd -s /sbin/nologin fmadmin [root@samba ~]# useradd -g fmadmin -s /sbin/nologin fmuser [root@samba ~]# useradd -s /sbin/nologin tsadmin [root@samba ~]# useradd -g tsadmin -s /sbin/nologin tsuser [root@samba ~]# useradd -s /sbin/nologin proadmin [root@samba ~]# useradd -g proadmin -s /sbin/nologin prouser [root@samba ~]# useradd -s /sbin/nologin csadmin [root@samba ~]# useradd -g csadmin -s /sbin/nologin csuser [root@samba ~]# useradd -s /sbin/nologin admin |
添加口令
[root@samba ~]# smbpasswd -a hradmin New SMB password: Retype new SMB password: Added user hradmin. []# smbpasswd -a hruser []# smbpasswd -a fmadmin []# smbpasswd -a fmuser []# smbpasswd -a tsadmin []# smbpasswd -a tsuser []# smbpasswd -a proadmin []# smbpasswd -a prouser []# smbpasswd -a csadmin []# smbpasswd -a csuser []# smbpasswd -a admin |
2)新建共享目录
[root@samba ~]# mkdir /CQIE [root@samba ~]# cd /CQIE [root@samba CQIE]# mkdir HR FM TS PRO CS Share [root@samba CQIE]# cd Share [root@samba Share]# mkdir HR FM TS PRO CS Tools |
3)更改目录属性
[root@samba CQIE]# chown hradmin.hradmin HR [root@samba CQIE]# chown fmadmin.fmadmin FM [root@samba CQIE]# chown tsadmin.tsadmin TS [root@samba CQIE]# chown proadmin.proadmin PRO [root@samba CQIE]# chown csadmin.csadmin CS [root@samba CQIE]# chown admin.admin Share [root@samba CQIE]# cd Share/ [root@samba Share]# chown hradmin.hradmin HR && chown fmadmin.fmadmin FM && chown tsadmin.tsadmin TS && chown proadmin.proadmin PRO && chown csadmin.csadmin CS && chown admin.admin Tools [root@samba Share]# chmod 1775 HR FM TS PRO CS |
4)配置samba如下:
#======================= Global Settings ===================================== [global] # ----------------------- Network Related Options ------------------------- # # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH # # server string is the equivalent of the NT Description field # # netbios name can be used to specify a server name not tied to the hostname workgroup = WORKGROUP server string = David Samba Server Version %v netbios name = WusamSamba # --------------------------- Logging Options ----------------------------- # # Log File let you specify where to put logs and how to split them up. log file = /var/log/samba/log.%m max log size = 50 # ----------------------- Standalone Server Options ------------------------ # # Scurity can be set to user, share(deprecated) or server(deprecated) security = user passdb backend = tdbsam #============================ Share Definitions ============================== [HR] comment = This is a directory of HR. path = /CQIE/HR/ public = no admin users = hradmin valid users = @hradmin writable = yes create mask = 0750 directory mask = 0750 [FM] comment = This is a directory of FM. path = /CQIE/FM/ public = no admin users = fmadmin valid users = @fmadmin writable = yes create mask = 0750 directory mask = 0750 [TS] comment = This is a directory of TS. path = /CQIE/TS/ public = no admin users = tsadmin valid users = @tsadmin writable = yes create mask = 0750 directory mask = 0750 [PRO] comment = This is a PRO directory. path = /CQIE/PRO/ public = no admin users = proadmin valid users = @proadmin writable = yes create mask = 0750 directory mask = 0750 [CS] comment = This is a directory of CS. path = /CQIE/CS/ public = no admin users = csadmin valid users = @csadmin writable = yes create mask = 0750 directory mask = 0750 [Share] comment = This is a share directory. path = /CQIE/Share/ public = no valid users = admin,@hradmin,@fmadmin,@tsadmin,@proadmin,@csadmin writable = yes create mask = 0755 directory mask = 0755 |
五. 实验验证
1)Windows验证
在和samba服务器相连的桌面Win10下,打开主文件夹,在下图①所示的路径处输入samba服务器ip:192.168.100.70,按提示在②和③处分别输入用户名和密码,实例是hradmin的身份登录
图6- 5
可以按实验目标逐一检验,这里省略。
【Tips】Windows下切换连接:
以管理员身份运行CMD
①查看连接
>net use |
图6- 6
②删除现有连接
>net use \\192.168.100.70\IPC$ /del /y |
③新切换用户连接
> net use h: \\192.168.100.70\CS\ /user:csadmin wu |
再在主文件夹路径处输入192.168.100.70,按照上面的步骤就可进行验证。
2)CentOS8客户端(192.168.100.74)验证
> net use h: \\192.168.100.70\CS\ /user:csadmin wu |
# yum -y install chrony cifs-* samba-client samba-common samba [root@client ~]mkdir -p /mnt/samba //新建临时挂载目录 [root@client ~]# mount -t cifs //192.168.100.70/Share /mnt/samba -o username=hradmin,password=wu [root@client ~]# cd /mnt/samba/HR [root@client HR]# vi fromClient.txt [root@client HR]# cat fromClient.txt hi! i'm hradmin from client74! |
图6- 7
到samba服务器(192.168.100.70)测试,核验:
图6- 8
如果要切换用户,先得卸掉挂载:
[root@client ~]# umount -t cifs //192.168.100.70/Share /mnt/samba |
然后按照新身份挂载
[root@client ~]# mount -t cifs //192.168.100.70/TS /mnt/samba -o username=tsadmin,password=wu |
按照“实验目标”逐条进行各种验证(略)
思考题:
1.chmod 1777和 chmod 2770有上面区别?其中的第1位名称称作setgid,是什么意思?
setgID | 用户 | 组 | 其他 |
4 用户 | |||
2 组 | |||
1 其他 |