IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> RHCE 第八天 SAMBA -> 正文阅读

[网络协议]RHCE 第八天 SAMBA

Samba服务 - SMB协议

Samba协议基础

在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配置文件

Samba的配置文件为/etc/samba/smb.conf

配置文件分为三个部分:

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

在这里插入图片描述

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//禁止登录用户,用户用逗号隔开,组用@  //禁止  
访问控制

hosts allow =	允许主机  192.168.100.

hosts deny =	拒绝主机  允许优先  

max connections = 最大连接数目

deadtime = 断掉连接时间(分钟,0为不限制)

public =所有用户都可以访问    /   guest ok=yes/no

map to guest = Bad User	匿名访问



使用的端口

  1. Port 137 (UDP) - NetBIOS 名字服务 ; nmbd
  2. Port 139 (TCP) - 文件和打印共享 ; smbd (基于SMB(Server Message Block)协议,主要在局域网中使用,文件共享协议)
  3. Port 138 (UDP) - NetBIOS 数据报服务
  4. Port 445 (TCP) - NetBIOS服务在windos 2000及以后版本使用此端口, (Common Internet File System,CIFS,它是SMB协议扩展到Internet后,实现Internet文件共享) 139/445



实现文件共享

Linux服务端:

[root@localhost ~]# mount /dev/sr0 /mnt/		#挂载光盘
[root@localhost ~]# yum install samba -y		#安装samba服务
[root@localhost ~]# vim /etc/samba/smb.conf		#配置文件

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
# 修改了只留下一些比较重要的

[global]
        workgroup = SAMBA			#工作组名称               
        security = user				#安全验证方式
#        passdb backend = tdbsam		#用户后台的类型

[homes]
        comment = Home Directories
        valid users = %S, %D%w%S	#可访问的用户
        browseable = No				#不可浏览,表示不可见
        read only = No				#只读
        inherit acls = Yes			#继承权限


[root@localhost ~]# useradd lisi		#添加lisi用户
[root@localhost ~]# smbpasswd -a lisi	#吧lisi添加到samba服务中
New SMB password:
Retype new SMB password:
[root@localhost ~]# pdbedit -L			#展示一下samba中的用户
lisi:1006:
[root@localhost ~]# systemctl restart smb nmb		#重启两个服务

下面在Windows上测试
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


用户自定义共享文件

1、通过samba提供一个公共文件服务器,所有人都可以访问并写入,但是当前用户不可以删除和修改他人的文件

[root@localhost ~]# vim /etc/samba/smb.conf
#####           以下是自己定义的                ####

[public]
        comment = this is public
        writable = yes
        path = /pubtest
        create mask = 0644
        directory mask = 755

在这里插入图片描述

[root@localhost ~]# mkdir /pubtest		#创建对应的共享文件
[root@localhost ~]# touch /pubtest/{1,2,3,4,5}
[root@localhost ~]# ll /pubtest/
total 0
-rw-r--r--. 1 root root 0 Aug 26 21:40 1
-rw-r--r--. 1 root root 0 Aug 26 21:40 2
-rw-r--r--. 1 root root 0 Aug 26 21:40 3
-rw-r--r--. 1 root root 0 Aug 26 21:40 4
-rw-r--r--. 1 root root 0 Aug 26 21:40 5
[root@localhost ~]# systemctl restart smb nmb

在Windows上测试
在这里插入图片描述
在这里插入图片描述
要想实现用户不可以删除和修改他人的文件,就是只能对自己的文件删除修改就要对 /pubtest 目录进行下面的操作

[root@localhost ~]# chmod o+t /pubtest/

效果如下,我用lisi想删除root的4文件,会提示没有权限:
在这里插入图片描述



2、技术部需要一个文件服务器,用于存放常用的软件工具,所有人都可以访问,但是只有技术部里的用户可以写入

[root@localhost ~]# vim /etc/samba/smb.conf

[soft]
        comment =this is soft
        path = /soft
        read only = yes
        write list = @soft

在这里插入图片描述

[root@localhost ~]# mkdir /soft
[root@localhost ~]# touch /soft/{1,2,3,4,5}
[root@localhost ~]# groupadd soft 				#添加一个组 soft
[root@localhost ~]# useradd zhangsan			#添加用户zhangsan
[root@localhost ~]# smbpasswd -a zhangsan		#把zhangsan加入到samba
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@localhost ~]# gpasswd -a zhangsan soft 	#把张三添加到 soft组中
Adding user zhangsan to group soft

[root@localhost ~]# pdbedit -L
lisi:1006:						#lisi待会是没有权限写入的
zhangsan:1007:					#soft里面只有zhangsan

[root@localhost ~]# ll -d /soft/	#看一下 /soft目录的权限
drwxr-xr-x. 2 root root 51 Aug 26 22:00 /soft/

#修改目录对于 /soft组的权限
[root@localhost ~]# setfacl -m g:soft:rwx /soft/

[root@localhost ~]# systemctl restart smb nmb

在这里插入图片描述
在Windows上测试:
在这里插入图片描述
果然:
在这里插入图片描述

清除缓存
win + r 进入cmd
输入:net use * /delete
在这里插入图片描述
切换到zhangsan来试试:
在这里插入图片描述

在Linux客户机上访问共享文件

方式一:使用smbclient

[root@localhost ~]# mount /dev/sr0 /mnt/
[root@localhost ~]# yum install samba-client -y
[root@localhost ~]# smbclient -L //192.168.72.130/ -U zhangsan 
Enter zhangsan's password: 
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.10.4]

	Sharename       Type      Comment
	---------       ----      -------
	public          Disk      this is public
	soft            Disk      this is soft
	IPC$            IPC       IPC Service (Samba 4.10.4)
	zhangsan        Disk      Home Directories
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.10.4]

	Server               Comment
	---------            -------
	LOCALHOST            Samba 4.10.4

	Workgroup            Master
	---------            -------
	SAMBA                LOCALHOST

[root@localhost ~]# smbclient  //192.168.72.130/soft/ -U zhangsan 
Enter zhangsan's password: 
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.10.4]
smb: \> 

在这里插入图片描述

smb: \> get 综合练习:.md 		#下载刚刚zhangsan传进来的文件
getting file \综合练习:.md of size 895 as 综合练习:.md (58.3 KiloBytes/sec) (average 58.3 KiloBytes/sec)

在当前客户机上新建一个文件newfile
在这里插入图片描述

smb: \> put newfile 		#zhangsan也可以传文件
putting file newfile as \newfile (0.0 kb/s) (average 0.0 kb/s)

方式二:挂载

[root@localhost ~]# mkdir /pub
[root@localhost ~]# mount //192.168.72.130/soft /pub -o username=zhangsan,password=200001
[root@localhost ~]# ll /pub/
total 4
-rw-r--r--. 1 root root   0 Aug 26 22:00 1
-rw-r--r--. 1 root root   0 Aug 26 22:00 2
-rw-r--r--. 1 root root   0 Aug 26 22:00 3
-rw-r--r--. 1 root root   0 Aug 26 22:00 4
-rw-r--r--. 1 root root   0 Aug 26 22:00 5
-rwxr--r--. 1 1007 1009   0 Aug 26 22:44 newfile
-rwxr--r--. 1 1007 1009 895 Aug 26 17:03 综合练习:.md



附加练习:多用户挂载的验证策略 (条件:多个用户对当前文件系统有不同的权限并且客户端要求只能通过某一个挂载点目录访问文件系统)
再服务器上通过SMB共享目录/devops,并满足以下要求
1、共享名为devops
2、共享目录devops只能被192.168.100.0/24网段中的客户端使用
3、共享目录devops必须可以被浏览 browseable =Yes
4、用户xixi必须能以读的方式访问此共享,访问密码是redhat
5、用户heihei必须能以读写的方式访问此共享,访问密码是redhat
此共享永久挂载在192.168.171.144上的/devops/目录,并使用用户xixi作为认证任何用户可以通过用户heihei来临时获取写的权限

在服务端:

[root@localhost ~]# vim /etc/samba/smb.conf

[devops]
        hosts allow = 192.168.72.
        browseable = yes
        read only = yes
        write list = heihei
        path = /devops


[root@localhost ~]# mkdir /devops
[root@localhost ~]# touch /devops/{1,2,3,4,5}
[root@localhost ~]# useradd xixi
[root@localhost ~]# useradd heihei
[root@localhost ~]# smbpasswd -a xixi
New SMB password:
Retype new SMB password:
Added user xixi.
[root@localhost ~]# smbpasswd -a heihei
New SMB password:
Retype new SMB password:
Added user heihei.
[root@localhost ~]# setfacl -m u:heihei:rwx /devops/
[root@localhost ~]# systemctl restart smb nmb


在客户端

[root@localhost ~]# yum install cifs-utils -y
[root@localhost ~]# mkdir /devops
[root@localhost ~]# vim /etc/fstab 

//192.168.72.130/devops /devops                 cifs    defaults,username=xixi,password=200001,multiuser,sec=ntlmssp    0 0

在这里插入图片描述multiuser 支持多用户认证
sec=ntlmssp 认证方式为标准smb认证方式

[root@localhost ~]# mount -a
[root@localhost ~]# useradd xixi -u 1009
[root@localhost ~]# useradd heihei -u 1010

[root@localhost ~]# cd /devops/
[root@localhost devops]# ll
total 0
-rw-r--r--. 1 root root 0 Aug 26 23:24 1
-rw-r--r--. 1 root root 0 Aug 26 23:24 2
-rw-r--r--. 1 root root 0 Aug 26 23:24 3
-rw-r--r--. 1 root root 0 Aug 26 23:24 4
-rw-r--r--. 1 root root 0 Aug 26 23:24 5
[root@localhost devops]# touch 1
touch: cannot touch ‘1’: Permission denied						#root没权限创建文件

[root@localhost devops]# su - heihei
[heihei@localhost ~]$ cd /devops
[heihei@localhost devops]$ ll
ls: reading directory .: Permission denied
total 0
[heihei@localhost devops]$ cifscreds add 192.168.72.130			#进行认证
Password: 
[heihei@localhost devops]$ ll
total 0
-rw-r--r--. 1 root root 0 Aug 26 23:24 1
-rw-r--r--. 1 root root 0 Aug 26 23:24 2
-rw-r--r--. 1 root root 0 Aug 26 23:24 3
-rw-r--r--. 1 root root 0 Aug 26 23:24 4
-rw-r--r--. 1 root root 0 Aug 26 23:24 5
[heihei@localhost devops]$ touch 111							#heihei可以查看也可以创建文件
[heihei@localhost devops]$ ll
total 0
-rw-r--r--. 1 root   root 0 Aug 26 23:24 1
-rw-r--r--. 1 heihei 1012 0 Aug 26 23:41 111
-rw-r--r--. 1 root   root 0 Aug 26 23:24 2
-rw-r--r--. 1 root   root 0 Aug 26 23:24 3
-rw-r--r--. 1 root   root 0 Aug 26 23:24 4
-rw-r--r--. 1 root   root 0 Aug 26 23:24 5
[heihei@localhost devops]$ su -
Password: 
Last login: Thu Aug 26 23:39:54 CST 2021 on pts/1
[root@localhost ~]# su xixi										#切换xixi
[xixi@localhost root]$ cifscreds add 192.168.72.130				#认证
Password: 
[xixi@localhost root]$ cd /devops/
[xixi@localhost devops]$ ll										
total 0
-rw-r--r--. 1 root   root 0 Aug 26 23:24 1
-rw-r--r--. 1 heihei 1012 0 Aug 26 23:41 111
-rw-r--r--. 1 root   root 0 Aug 26 23:24 2
-rw-r--r--. 1 root   root 0 Aug 26 23:24 3
-rw-r--r--. 1 root   root 0 Aug 26 23:24 4
-rw-r--r--. 1 root   root 0 Aug 26 23:24 5
[xixi@localhost devops]$ touch 12
touch: cannot touch ‘12’: Permission denied




#安全验证方式介绍: 

#share:  来访主机无需验证口令;比较方便,但安全性很差 
#user:	 需验证来访主机提供的口令后才可以访问;提升了安全性 
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证 
#用户后台的类型介绍: 

#smbpasswd: 使用smbpasswd命令为系统用户设置Samba服务程序的密码
#tdbsam:	创建数据库文件并使用pdbedit命令建立Samba服务程序的用户 
#ldapsam:	基于LDAP服务进行账户验证

valid users
在这里插入图片描述
删除samba服务中的某个用户:smbpasswd -x 用户名

删除linux中某个用户所有信息:userdel -r 用户名

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:42:41  更:2021-08-28 09:45:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:31:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码