RHCE(十四)Windows和Linux文件共享——Samba服务

Samba协议

SMB(Server Message block)协议是window下所使用的文件共享协议,我们在linux系统或者其类unix系统当中可以通过samba服务来实现SMB功能。Samba服务是SMB的一个开源实现。

在NetBIOS 出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议, Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,实现不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)。

随着 Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。

Samba软件的功能

想要让Windows和Unix计算机相集成,最好的办法即是在Unix计算机中安装支持SMB/CIFS协议的软件,这样Windows客户就不需要更改设置,就能如同使用Windows NT服务器一样,使用Unix计算机上的资源了。Samba是用来实现SMB的一种软件,它的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMB(Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows的NETBEUI协议让Unix计算机可以在网络邻居上被Windows 计算机看到。它的功能有:

  1. 共享Linux磁盘给Win95/NT
  2. 共享Win95/NT磁盘给Linux机器
  3. 共享Linux打印机给win95/NT
  4. 共享win95/NT打印机给Linux机器

两个服务

安装samba

Yum install samba -y

Samba拥有两个主服务(相关服务)

  • smbd:对于一般使用的服务他只有一个主服务 smbd (提供samba核心功能也是使用最多的一种功能)
    提供文件及打印共享服务功能,使用139/445端口
  • nmbd:nmbd 提供Netbios(解析协议慢慢的被淘汰)支持,使用137/138端口,而对于这种协议使用较少,现在都是dns进行解析

一般作为文件共享使用samba,则只需要smbd服务

使用的端口

Port 137 Used for NetBIOS network browsing
Port 138 Used for NetBIOS name service
Port 139 Used for file and printer sharing and other operations
Port 445 Used by Windows 2000/XP when NetBIOS over TCP/IP is disabled

NFS、samba、FTP三种文件传输协议的区别

NFS:Network File System 是已故的Sun公司制定的用于分布式访问的文件系统,它的本质是文件系统。主要在Unix系列操作系统上使用,基于TCP/IP协议层,可以将远程的计算机磁盘挂载到本地,像本地磁盘一样操作。

samba是Unix系统下实现的 Windows文件共享协议-CIFS,由于Windows共享是基于NetBios协议,是基于Ethernet的广播协议,在没有透明网桥的情况下(如VPN)是不能跨网段使用的。它主要用于unix和windows系统进行文件和打印机共享,也可以通过samba套件中的程序挂载到本地使用。

FTP的目的是在Internet上共享文件而发明的一种协议,基于TCP/IP。世界上绝大多数系统都会有支持FTP的工具存在,通用性很强。目前少有人把VPS修改成支持FTP组件的形式,主要是因为FTP一开始就不是为了文件系统而设计的。

三种协议虽然都可以支持文件共享,但是其功能点和侧重点上面各有所不同,协议格式不同。Authentication登陆方式也会随着协议的内容也有所不同。

SAMBA配置文件

Samba的配置文件为/etc/samba/smb.conf,配置文件分为三个部分:

  • [global] 定义全局性配置(配置samba服务的相关参数)
  • [homes] 定义对用户家目录的共享配置(其实在默认情况下不做任何设置,直接启用服务我们就可以通过smb协议访问所有用户的家目录)
  • [printers] 定义打印机共享配置

global

[global]					###全局控制段###
    workgroup = MYGROUP		#定义该Samba服务器所在的工作组或者域
    server string = Samba Server Version %v	  
    security = user				#安全级别
    encrypt passwords = yes		#密码加密
    wins support = yes			#wins支持
    log level = 1 				#日志级别
    max log size = 1000			#最大日志大小(kb)
    read only = no			    #可读写

其中security = user定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
* share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
* user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
* server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
* domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。

homes

[homes] 					#家目录
   	comment = Home Directories
	browsable = no				
	writable = yes

当客户机发出服务请求时,就在smb.conf文件的其它部分查找友特定内容的服务。如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。通过Homes段,Samba可以得到用户的Home目录并使之共享。

用户控制:本地用户

 public =所有用户都可以访问    /guest ok=yes/no
 map to guest = Bad User	匿名访问
 browseable = 可浏览(设置共享是否可游览,如果是no表示隐藏,通过ip+共享名进行访问)
 writable = yes	可写,还要看目录权限     rw
 write list = maomao,@GROUPNAME,+GROUPNAME
 read only = yes 只读设置     ro
 create mask = 0644 客户机创建文件权限
 directory mask = 0755 客户机创建目录的权限
 valid user = //允许
invalid =  user1,user2,@group1//禁止登录用户,用户用逗号隔开,组用@  //禁止  
访问控制
 max connections = 最大连接数目
 deadtime = 断掉连接时间(分钟,0为不限制)
 hosts allow =	允许主机  
 hosts deny =	拒绝主机  允许优先

printers

[printers] 					#打印机
	comment = All Printers
	path = /var/spool/samba		#指定目录
	browseable = no
	guest ok = no				#说明游客也能打印
	writable = no
	printable = yes				#指明该打印机可以打印
	write list = +staff   		#用来指定可以在该共享下写入文件的用户        

修改配置文件必须重启服务才生效

[root@mail samba]# systemctl restart smb
[root@mail samba]# systemctl restart nmb

添加samba用户

上面的安全级别为security = user,所以要添加samba用户(先useradd添加用户)

[root@localhost samba]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.

查看samba用户用:pdbedit -L

Windows客户端访问

在window资源设备器上去访问:

\\192.168.0.130

Windows会缓存用户登录信息,若要修改后再查看需要删除缓存信息

cmd>net use * /delete		windows系统中删除登陆缓存信息

linux客户端访问

安装软件包——samba-client

列出服务器资源


[root@localhost ~]# smbclient -L //192.168.171.143 -U xixi
出现错误(暂时可以解决):
protocol negotiation failed: NT_STATUS_IO_TIMEOUT
解决办法是在客户端的/etc/hosts文件中添加客户端和服务端的地址映射
如:
192.168.40.131  web
192.168.40.132  ldap

通过客户端 进入samba

[root@localhost ~]# smbclient  //192.168.221.129/public -U xixi
Enter xixi's password: 
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \>ls  	查看共享目录信息
smb: \> mget File  下载文件
smb: \>showconnect	 查看连接情况

客户端挂载文件系统

手动挂载(临时挂载)

#挂载使用资源
mount  //192.168.171.143/share    /share   -o username=xixi,password=redhat
挂载命令    指定文件系统             挂载点目录 -o 指定挂载参数列表信息

开机自动挂载

//192.168.142.128/share	/pub	  cifs	   	defaults,username=xixi,password=redhat      0  0                                                                                                                                           (通用互联网文件系统)
共享目录		          挂载点目录 文件系统类型  挂载参数,基于用户密码参数	              开机是否检查 是否备份

autofs自动挂载

#安装autofs
yum install autofs -y

#主配置文件
vim /etc/auto.master
	/auto 	/etc/auto.msic 
	挂载点	挂载时指定的配置文件

#挂载时使用的配置文件
public   			-fstype=cifs,username=user1,password=redhat  	://192.168.0.128/public
触发条件(挂载点目录)	文件系统参数信息								    文件系统

注意:挂载时参数信息必须指定文件系统类型和用户名和密码

练习:多用户SMB挂载

在服务器上通过SMB共享目录/devops,并满足以下要求
1、共享名为devops
2、共享目录devops只能被192.168.171.0/24网段中的客户端使用 hosts allow = 172.16.80.
3、共享目录devops必须可以被浏览
4、用户xixi必须能以读的方式访问此共享,访问密码是redhat ro
5、用户haha必须能以读写的方式访问此共享,访问密码是redhat rw
此共享永久挂载在192.168.171.144上的/mnt/dev/目录,并使用用户xixi作为认证任何用户可以通过用户haha来临时获取写的权限

配置服务端

1、 安装软件
[root@wangxing ~]# yum install samba -y

2、修改配置文件
[root@wangxing samba]# vim smb.conf
在这里插入图片描述

3、创建/devops目录
[root@wangxing ~]# mkdir /devops

4、添加Samba用户,并设置访问控制
在这里插入图片描述
5、重启smb,nmb服务,关闭防火墙和selinux
[root@wangxing ~]# systemctl restart smb nmb
[root@wangxing ~]# systemctl stop firewalld
[root@wangxing ~]# setenforce 0

配置客户端

1、 安装cifs-utils软件
[root@desktop ~]# yum install cifs-utils -y

2、创建挂载点目录
在这里插入图片描述
3、创建和服务端同样的测试用户
[root@desktop ~]# useradd -u 1111 haha
[root@desktop ~]# useradd -u 2222 xixi

4、 修改fstab文件
[root@desktop ~]# vim /etc/fstab

//172.24.8.128/devops  /123/dev  cifs      defaults,multiuser,username=xixi,password=redhat,sec=ntlmssp  0 0
共享目录		          挂载点	  文件系统类型   参数:默认,多用户挂载,用户,密码,安全级别=网络安全级别		       开机自检 是否备份

[root@desktop ~]# mount -a

5、提权cifs-utils对xixi和haha用户提权

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章