【讲清楚,说明白!】常用共享存储--Samba服务器配置实战

目录:
(一)Samba服务器的基本配置
(二)Samba服务中关于SELinux的一些注意点
(三)multiuser多用户挂载的配置



Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,由服务器客户端程序构成。SMB(Server Messages Block)信息服务块是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block)消息服务块协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得多个主机之间共享文件变得越来越简单。到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。当时Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的字符而拒绝了申请。后来Tridgwell不断翻看字典,突然看到一个拉丁舞蹈的名字---Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生。Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。



(一)Samba服务器的基本配置
(1.1)samba服务器中主要是有两个服务:smb和nmb。其中nmb服务主要是针对Windows 95或者Windows 98比较旧的操作系统,如果需要和这类操作系统进行文件共享则需要开启nmb服务。smb服务主要是在tcp的139和445 端口上进行工作,nmb服务主要是在udp的137和138端口上进行工作。
(1.2)首先在vms001主机上安装samba服务,然后我们将防火墙设置允许samba服务通过,并且将SELinux设置为开启进入Enforcing的模式,进入到/etc/samba/目录编辑smb.conf配置文件
# firewall-cmd --add-service=samba --permanent


(1.3)我们可以使用egrep命令过滤出smb.conf配置文件中生效的配置信息。其中workgroup表示的是所通信的Windows主机的工作组信息(图1-5),如果Linux主机需要和Windows主机进行通信,则此时workgroup信息需要填写正确的才可以识别。而第二个参数server string表示是注释信息,“%v”表示的是版本(图1-7)。
# egrep -v ‘(#|;|^$)‘ /etc/samba/smb.conf---“^$”表示的是空白行
# man smb.conf




(1.4)其中第三个参数interfaces表示的是服务运行的IP地址的范围,默认是运行在所有地址的监听的端口上(图1-9)。
# systemctl start smb
# systemctl enable smb
# netstat -tunlp | grep smb


(1.5)第四个参数log file表示的是samba服务运行的日志保存的位置。第五个参数max log size表示的是日志记录时保存容量的最大值信息,例如我们的/var/log目录下存放着messages文件,它记录的文件容量达到一定的大小后便开始rotate(轮换),即将messages文件备份成“messages+日期”格式的压缩文件,然后清空messages文件中的内容记录新的日志信息(图1-11)。



(二)Samba服务中关于SELinux的一些注意点
(2.1)第六个参数security表示的是一种验证方式,用来设置客户端来访问我的samba服务器的时候,是否需要输入密码,默认值user表示的是必须要输入用户名和密码进行验证才可以登录samba服务(图1-13)。其中Windows系统在登录samba服务的时候,使用的是samba服务中的用户名和密码,而这个samba用户必须是samba服务器上存在的本地用户,即必须要存在于/etc/passwd文件里。首先我们在系统中我们查询到存在tom用户和bob用户,但是不存在marry用户,同时设置bob用户为/sbin/nologin,使得bob用户可以登录samba服务,但是无法登录vms001主机。
# usermod -s /sbin/nologin bob---修改bob用户的登录shell为/sbin/nologin



(2.2)我们在vms001主机上安装包含smbpasswd命令的软件包,不过此时由于firewall是属于public开启的状态,所以我们需要设置防火墙允许samba服务通过,同时还要设置允许ftp服务通过。同时还要配置SELinux中的bool值,将ftpd_full_access的bool值设置为on,此时我们就可以正常的安装smbpasswd命令的软件包了。
# yum whatprovides */smbpasswd
# yum install samba-client-4.1.12-21.el7_1.x86_64 -y
# firewall-cmd --list-all
# firewall-cmd --add-service=samba --permanent
# firewall-cmd --add-service=ftp --permanent
# getsebool -a | grep ftp
# setsebool -P ftpd_full_access on



(2.3)接着我们可以将相关的用户添加到samba服务中,注意,此处添加用户时设置的samba密码可以和用户登录系统时使用的密码不同,添加bob用户是正常的,虽然bob用户设置的是/sbin/nologin,但是仍然可以正常的添加到samba服务中,而marry用户在vms001主机上并不存在,所以也无法添加到samba服务中。接着我们从Win7主机上尝试登陆vms001主机的samba服务(图1-20),在/etc/samba/目录下的smb.conf文件中已经提示我们需要设置目录的SELinux权限,此时我们是可以正常的登录samba服务中bob用户的文件夹中的(图1-24)。
# pdbedit -L---查询当前samba服务中的所有用户
# smbpasswd -a tom---将tom用户添加到samba服务中
# smbpasswd -d tom---将tom用户禁用
# smbpasswd -e tom---将tom用户启用







(2.4)接下来我们在vms001主机上创建一个目录,我们创建一个/zz目录,希望将这个目录共享出去,在smb.conf配置文件中配置完毕后,将smb服务重启一下。此时我们在Win7主机上便可以看到hello-zz目录,由于没有修改目录的上下文信息,所以无法正常的进入hello-zz目录,修改完毕后便可以正常的登录/zz目录了
# chcon -t samba_share_t /zz






(2.5)接着我们使用Linux客户端尝试登录vms001主机的samba服务,我们首先在vms002主机上安装smbclient命令的软件。此时我们从vms002主机上可以正常的登录vms001主机上samba服务共享的目录,但是却没有创建文件的权限(图1-32)。
# smbclient -L //vms001 -U bob%redhat---在Linux客户端上查询samba服务的共享目录信息
# smbclient //vms001/hello-zz -U bob%redhat---在Linux客户端上登录samba服务


(2.6)此时我们可以使用以下思路进行判断,如果我们搭建了某个服务,从客户端上开始往服务器上传输文件,但是没法传输上去,应该从以下三部曲来检查:1.检查配置文件是否允许写;2.检查文件系统是否有权限;3.检查SELinux的权限设置情况,一般SELinux涉及的就是上下文和布尔值两个方面。首先我们在vms001主机的smb.conf配置文件中的hello-zz目录下添加可写的权限,并将samba服务重启一下(图1-33);然后我们还要修改文件系统的权限,由于登录系统时,我们使用的是tom和bob用户,但是/zz目录中其他用户并没有可以写的权限,所以我们应该给/zz目录的“o”加上可写的权限(图1-35)。
# smbclient -L //vms001 -U bob%redhat
# smbclient //vms001/hello-zz -U bob%redhat



(2.7)现在我们的需求是允许指定的用户可以在samba服务器的目录中可以写,一般是通过以下的两种方式进行控制:1控制配置文件可否写的权限;2文件系统是否允许写的权限。而我们实现这种需求可以通过两种方法实现:第一种我们首先允许文件系统中所有的其他用户都可以写,然后在smb.conf配置文件中只是允许tom用户可以写,此时在Win7客户端上使用tom用户可以正常的在samba服务的hello-zz文件夹中创建文件(图1-38),而使用bob用户则无法正常的在samba服务的hello-zz文件夹中创建文件(图1-39)。




(2.8)第二种方法我们可以指定配置文件中的所有用户都可以写并将samba服务重启一下,但是在文件系统中我们去除其他用户可写的权限,同时使用acl来指定bob用户可以写,此时在Win7系统上使用tom用户登录vms001主机的samba服务,发现在hello-zz目录中无法创建文件了(图1-42),但是使用bob用户在vms001主机的samba服务上,发现是可以在hello-zz目录中创建文件的(图1-43)。
# chmod o-w /zz
# setfacl -m u:bob:rwx /zz/
# smbclient //vms001/hello-zz -U bob%redhat




(2.9)接着我们也可以使用hosts allow和hosts deny来指定特定的客户端可以访问或者无法访问samba服务,我们设置IP地址为192.168.26.104主机,用户名为tom的用户可以访问vms001主机的samba服务,此时我们发现Win7主机上tom用户是可以正常的访问vms001主机的samba服务的(图1-45),此时我们发现在vms002主机上使用bob用户是无法登录vms001主机的samba服务的(图1-46)。
注意:hosts allow指的是在smb.conf配置文件中指定的主机IP地址才可以正常的访问samba服务,没有指定的IP地址都不能访问;hosts deny指的是在smb.conf配置文件中指定的主机IP地址为拒绝访问samba服务,没有指定的IP地址才可以正常的访问。
# setfacl -x u:bob /zz/---取消bob用户对/zz目录的特殊权限
# smbclient //vms001/hello-zz -U bob%redhat



(2.10)在Windows中存在着隐藏共享的概念,即目录名后有“$”符,那么正常的时候用户登录共享服务是看不到目录名的,但是用户如果自己在知晓的情况下在目录名后加上一个“$”符号,此时便可以正常的登录到目录中去。现在我们的需求是将vms001主机的samba服务中的hello-zz目录设置为一个隐藏共享,我们将browseable的值设置为no,并将服务重启一下,此时用户便无法看到这个目录(图1-49),但是仍然可以登录到这个目录中(图1-50)。




(2.11)上面的目录设置了隐藏共享后对所有用户都是不可见的,并不能对特定的用户单独设置开放可见目录的操作。现在我们的需求是我们只对tom用户设置可见隐藏共享的目录,只有tom进入到隐藏共享的目录hello-zz后仍然是可见的,但是其他用户进入后仍然是看不见的。首先我们在smb.conf配置文件中将browseable设置为no(图1-51),表示对所有的用户都是隐藏不可见的,同时在Network-Related Options后添加一行信息“config file = /etc/samba/smb.conf.%U”(图1-52),这样我们就可以为指定的用户来配置特定的配置文件,例如我们创建了一个smb.conf.tom文件,在smb.conf.tom配置文件中我们设置值为yes,表示对tom用户目录是可见的(图1-53)。






(三)multiuser多用户挂载的配置
(3.1)我们在vms001主机的samba服务器端有两个用户,其中tom用户访问/zz目录的权限是rwx,而bob用户访问/zz目录的权限是r-x,此时我们从客户端vms002上访问vms001主机的samba服务时,vms002主机上如果存在多个用户tom1、tom2、tom3的时候,multiuser多用户挂载可以实现tom1用户以samba服务器上的tom用户身份访问/zz目录,tom2用户以samba服务器上的bob用户身份访问/zz目录这样的功能。
(3.2)我们在vms002主机上创建一个/smb目录,然后将/smb目录挂载到/hello-zz目录下,此时我们还需要在vms002客户端安装cifs软件包,安装完cifs软件包后,此时可以正常的将/smb挂载到/hello-zz目录下了。
# smbclient -L //vms001 -U bob%redhat
# mkdir /smb
# mount -o username=tom,password=redhat //vms001/hello-zz /smb
# yum install cifs-* -y---安装cifs模块的软件包
# cifscreds clearall---清除相关的缓存



(3.3)此时我们在vms002客户端上将/smb挂载到/hello-zz目录上,并且设置为multiuser多用户挂载的方式,且设置加密方式为ntlmssp。然后我们在vms002主机上创建三个用户tom1、tom2、tom3,并设置好密码(图1-60)。我们在vms002主机上切换到tom2用户,进入到/smb目录中发现并没有查询目录文件的权限,此时我们披上samba服务器上tom用户的“马甲”后,此时便拥有了tom用户的权限,可以查询目录内的信息,也可以创建新的文件(图1-61)。我们在vms002主机上切换到tom3用户,进入到/smb目录中发现也是没有查询目录文件的权限,此时我们披上samba服务器上bob用户的“马甲”后,此时便拥有了bob用户的权限,可以查询目录内的信息,但是没有创建文件的权限(图1-62)。以上就是我们multiuser多用户挂载常见的配置。
# mount -o username=tom,password=redhat,multiuser,sec=ntlmssp //192.168.26.101/hello-zz /smb---将/smb目录挂载到vms001主机的/hello-zz目录下
# cifscreds add vms001 -u tom---切换到samba服务器上使用tom用户的权限



—————— 本文至此结束,感谢阅读 ——————

原文地址:https://blog.51cto.com/13613726/2458748

时间: 2024-10-07 01:00:50

【讲清楚,说明白!】常用共享存储--Samba服务器配置实战的相关文章

【讲清楚,说明白!】常用共享存储--iSCSI服务部署企业级网络存储

目录:(一)了解什么是共享存储及共享存储的必要性(二)配置iSCSI服务器端(三)配置iSCSI客户端 iSCSI(Internet Small Computer System Interface),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,提出,并于2003年2月11如成为正式的标准.与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:1.把原来只用于本机的SCSI协议透过TCP/IP网络发送,使连接

生产场景NFS共享存储优化及实战

生产场景NFS共享存储优化: 1.硬件:sas/ssd磁盘,买多块,raid0/raid10,网卡好 2.NFS服务器端优化加all_squash,async /backup/NFS 192.168.0.0/24(rw,async,all_squash)用这两个选项效率高了,但是就不可靠了. 3.客户端挂载:rsize,wsize,noatime,nodiratime四个选项为性能优化选项,nosuid,noexec两个选项为安全优化选项 mount -t nfs -o noatime,nodi

配置Samba服务器配置现实文件共享(详解)

配置Samba服务器配置现实文件共享     一:实验环境 Samba服务端:xuegod63.cn   IP:192.168.1.63 Samba客户端:xuegod64.cn   IP:192.168.1.64 1:关闭iptables #很重要 2:关闭selinux 二:实验目标 1.samba服务器概述 2.samba服务器配置文件 3.实战,举例 三:实验代码 第一块:Samba服务概述:     Samba 最先在Linux 和Windows 两个平台之间架起了一座桥梁,正是由于S

Samba服务器配置

1991年,Andrew Tridgwell通过对数据包的分析,而编写了Samba这个自由软件(Samba官方网站:http://www.samba.org),只要在类UNIX启用Samba服务,类UNIX系统就好像变为了Windows甜系统,可以利用SMB协议与Windows系统之间实现资源共享等功能. Samba是开放源代码的GPL自由软件,可以说又是自由软件界的一个重大贡献.Samba的出现彻底解决了类UNIX与Windows之间的资源共享与访问,它以其简洁.实用.灵活配置.功能强大的特点

大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台. 亮点一:真实环境还原,课程采用了VM环境重现大网站集群服务器环境,真实环境还原再现. 亮点二:基础实用,细节决定成败,课程内容在演练过程中重点介绍各种细节,保证初级人员快速入门及高级进阶. 亮点三:讲师丰富的海量平台运作经验 讲师tom5多

2-5-NFS服务器配置和autofs自动挂载-配置Samba服务器配置现实文件共享

大纲: NFS服务器运行原理 实战配置NFS服务器 配置Samba服务器配置现实文件共享 ----------------------------------------------- 问题: # 怎么查看文件系统类型?! file -s /dev/sda #可查看未挂载的文件系统 df -T  #df -lhT #查看已挂载文件系统 mount #查看已挂载文件系统 fdisk /dev/sda  <输入 c 或 u 或 p 查看信息> parted  <输入p  打印分区表>

linux基础命令学习(七)samba服务器配置

samba有五种安全级别,它们分别是: share:不需要samba账户就可登陆samba服务器      user:需要添加samba账户才可以登陆samba服务器      server:由另外一台samba服务器来对用户进行身份验证.       domain:把samba服务器加入到NT域,由NT的域控制器来进行身份验证.      ADS:Active Directory Service,活动目录服务,它是samba3.0中新增的身份验证方式.采用ADS验证方式,samba服务器集成到

阿里云PolarDB及其共享存储PolarFS技术实现分析(上)

PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存在的运维和扩展性问题:通过引入RDMA和SPDK等新硬件来改造传统的网络和IO协议栈来极大提升数据库性能.代表了未来数据库发展的一个方向.本系列共2篇文章,主要分析为什么会出现PolarDB以及其技术实现. 由于PolarDB并不开源,因此只能基于阿里云公开的技术资料进行解读.这些资料包括从去年下半

消息队列、信号量、共享存储

消息队列.信号量.共享存储是IPC进程间通信的三种形式,它们功能不同,但有一些相似点,下面先介绍它们相类似的特征,然后再逐一说明. 1.相似点 每个内核中的IPC结构(消息队列.信号量.共享存储)都用一个非负整数的标识符加以引用,与文件描述符不同,当一个IPC结构被创建,以后又被删除时,与这种结构相关的标识符连续加1,直至达到一个整型数的最大正直,然后又回转到0.标识符是IPC对象的内部名,还有一个外部名称为键,数据类型是key_t,用于多个合作进程能够在同一IPC对象上会合,键由内核转换成标识