Linux之SMB/CIFS网络文件系统

本文详细介绍了SMB(Server Message Block)文件共享协议及其在Linux中的实现,包括Samba服务的组成部分、SMB用户管理、SMB共享目录及权限控制。文章还涵盖了如何在Linux上挂载SMB共享,包括临时和永久挂载的方法,并讨论了多用户挂载和匿名用户访问的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMB 文件共享

  • 是windows和Unix系统之间共享文件的一种协议
  • 主要用于Windows 和 Linux下的文件共享、打印共享
  • 实现匿名与本地用户文件的共享
  • 支持多节点挂载

Samba 服务的组成部分

软件包:
Samba的支持文件:Samba-common
客户端应用程序:Samba-client
服务器应用程序:Samba
服务名称:smb nmb
服务进程:
1、smbd进程:控制发布共享目录与权限、负责文件传输;TCP 139 445端口
2、nmbd进程:用于名称解析 UDP 137 138
主配置文件:/etc/samba/smb.conf
实验:
准备环境:
1、重置两台虚拟机,作为实验的两台主机
2、配置两台主机的 ip、yum源、主机名
服务端:

[root@server ~]# yum install samba samba-client samba-common #下载smb相关软件
[root@server ~]# systemctl start smb  #开启samba服务
[root@server ~]# systemctl enable smb
[root@server ~]# systemctl stop firewalld   #关闭防火墙
[root@server ~]# systemctl disable firewalld

查看smb的端口:
这里写图片描述

SMB 用户

smbpasswd
如果您没有Samba密码服务器,则必须在本地计算机上创建身份验证数据。使用smbpasswd创建Samba账户和密码
注意:smb用户必须是本地存在的用户
服务端:

[root@server ~]# useradd haha
[root@server ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@server ~]# id haha
uid=1001(haha) gid=1001(haha) groups=1001(haha)
[root@server ~]# smbpasswd -a student  #添加用户student并设置密码,这里的用户必须是系统实际存在用户
New SMB password:
Retype new SMB password:
Added user student.
[root@server ~]# smbpasswd -a haha   
New SMB password: 
Retype new SMB password:
Added user haha.
[root@server ~]# pdbedit -L  #查看smb用户
student:1000:Student User
haha:1001:
[root@server ~]# pdbedit -x student   #删除smb用户student
[root@server ~]# pdbedit -L
haha:1001:
[root@server ~]# smbpasswd -a student
New SMB password:
Retype new SMB password:
Added user student.

客户端:

[root@client ~]# yum install samba-client -y
[root@client ~]# smbclient -L //172.25.254.196   #列出196主机的samba服务的文件系统,-L 列出
Enter root's password:    #因为服务器没有添加smb用户,这里直接出车(匿名用户访问),显示的没有具体文件
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
[root@client ~]# smbclient  //172.25.254.196/student -U student   #指定用户登录访问smb文件系统
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*
smb: \> quit
[root@client ~]# smbclient  //172.25.254.196/student -U student
Enter student's password: 
session setup failed: NT_STATUS_LOGON_FAILURE

保护 smb

布尔值允许本地Linux主目录作为CIFS文件共享导出至其他系统:
samba_enable_home_dirs
布尔值允许挂载远程CIFS文件共享并将其用作本地Linux主目录:
use_samba_ home_dirs
smb共目录的selinux安全上下文: samba_share_t
共享系统目录时要打开:
samba_export_all _ro 和 samba_export_all_rw

服务端:
查看布尔值允许本地目录作为 cifs 文件共享的相关主目录
这里写图片描述

[root@server ~]# setsebool -P samba_enable_home_dirs on   #打开访问samba的布尔值

客户端:

[root@client ~]# smbclient  //172.25.254.196/student -U student   #访问student的文件系统可以查看
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Thu Jul 10 19:06:52 2014
  ..                                  D        0  Tue Jun  5 07:51:50 2018
  .bash_logout                        H       18  Wed Jan 29 07:45:18 2014
  .bash_profile                       H      193  Wed Jan 29 07:45:18 2014
  .bashrc                             H      231  Wed Jan 29 07:45:18 2014
  .ssh                               DH        0  Thu Jul 10 18:19:10 2014
  .config                            DH        0  Thu Jul 10 19:06:53 2014

		40913 blocks of size 262144. 28554 blocks available
smb: \> quit

smb 挂载

客户端:

[root@client ~]# smbclient  //172.25.254.19
CIFS(Common Internet File System) 协议 CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议现在是局域网上用于服务器文件访问和打印的协议。象SMB协议一样,CIFS在高层运行,而不象TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。 SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445。 服务器信息块(SMB)协议是一种IBM协议,用于在计算机间共享文件、打印机、串口等。SMB 协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如IPX和NetBEUI 之上。   SMB 一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。   在 TCP/IP 环境下,客户机通过 NetBIOS over TCP/IP(或 NetBEUI/TCP 或 SPX/IPX)连接服务器。一旦连接成功,客户机可发送 SMB 命令到服务器上,从而客户机能够访问共享目录、打开文件、读写文件,以及一切在文件系统上能做的所有事情。   从 Windows 95 开始,Microsoft Windows 操作系统(operating system)都包括了客户机和服务器 SMB 协议支持。Microsoft 为 Internet 提供了 SMB 的开源版本,即通用 Internet 文件系统 (CIFS)。与现有 Internet 应用程序如文件传输协议(FTP)相比, CIFS 灵活性更大。对于 UNIX 系统,可使用一种称为 Samba 的共享软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值