文件共享之SMB/CIFS协议及Samba的使用

1 SMB/CIFS协议及Samba的介绍

1.1 SMB/CIFS协议

 SMB(Server Message Block)又称CIFS(Common Internet File System),一种应用层网络传输协议(微软(Microsoft)和英特尔(Intel)在1987年制定的协议),由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。它也提供认证的进程间通讯技能。它主要用在Windows的机器上。
 CIFS是由microsoft在SMB的基础上发展,扩展到Internet上的协议。他和具体的OS无关,在unix上安装samba后可使用CIFS.它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。
 CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议现在是局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不象TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
1.2 Samba软件

Samba是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。
samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS、SMB、CIFS等等协议。

2 Samba的使用

2.1 samba服务的组成部分

Samba-common – 用来提供一些配置文件
Samba-client – 客户端应用程序
Samba – 服务端应用程序
samba在linux系统上的服务名称:smb
服务端口:通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容
主配置文件:/etc/samba/smb.conf

2.2 服务端(server虚拟机)的配置

使用该软件可以使windows和linux的资源共享,
接下来我们仅示例linux系统中共享文件后使用samba的操作,和windows共享文件之后在linux系统的操作一致

在服务端:
yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y    
smbpasswd -a westos                  #创建smb登陆用户,必须为服务端主机存在的用户
pdbedit -L                           #查看系统中smb用户
当selinux=enforcing时,
         mkdir /west               #建立共享目录
	     semanage fcontext -a -t samba_share_t '/west(/.*)?'
	     restorecon -RvvF /west
         vim /etc/samba/smb.conf
             [LEE]           #共享名称(等于作为磁盘名字) 
	         path=/west    #共享目录的绝对路径 
         systemctl restart smb
         systemctl enable smb.service
         systemctl stop firewalld

文件共享之SMB/CIFS协议及Samba的使用_第1张图片
文件共享之SMB/CIFS协议及Samba的使用_第2张图片
2.3 客户端(desktop虚拟机)的操作

    yum install samba-client
    smbclient -L //172.25.254.133   发现共享出来的目录与文件
    smbclient //172.25.254.133/LEE  不能登陆,需要用户
    smbclient //172.25.254.133/LEE -U westos
    挂载共享出来的目录:
    mount //172.25.254.133/LEE /mnt -o username=westos,password=westos
    cd /mnt
         

在这里插入图片描述
文件共享之SMB/CIFS协议及Samba的使用_第3张图片
文件共享之SMB/CIFS协议及Samba的使用_第4张图片
文件共享之SMB/CIFS协议及Samba的使用_第5张图片

3 修改共享目录的参数

3.1 修改目录说明(comment)

vim /etc/samba/smb.conf
comment=west dir 
systemctl restart smb   
smbclient -L //172.25.254.133   #发现共享出来的目录与文件,会看到目录的comment改变

文件共享之SMB/CIFS协议及Samba的使用_第6张图片
文件共享之SMB/CIFS协议及Samba的使用_第7张图片
3.2 设置共享文件隐藏,但并不是代表没有共享,照样可以使用

 vim /etc/samba/smb.conf
 browseable=no   (默认是yes)
 systemctl restart smb  
 smbclient -L //172.25.254.133  发现不了共享目录
 smbclient //172.25.254.133/LEE -U westos   但是可以登陆使用

文件共享之SMB/CIFS协议及Samba的使用_第8张图片
文件共享之SMB/CIFS协议及Samba的使用_第9张图片
3.3 设置哪些用户可以登陆smb

服务端:
 vim /etc/samba/smb.conf
 valid users=westos   只允许用户westos登陆
 systemctl restart smb  
添加用户smb用户lee,student
 useradd lee ;smbpasswd -a lee 
 pdbedit -L 查看该服务用户
 pdbedit -x student  删除student用户
 客户端:
 smbclient //172.25.254.133/LEE -U lee  不可以登陆使用
 smbclient //172.25.254.133/LEE -U westos   可以登陆使用

文件共享之SMB/CIFS协议及Samba的使用_第10张图片文件共享之SMB/CIFS协议及Samba的使用_第11张图片文件共享之SMB/CIFS协议及Samba的使用_第12张图片 3.4 设置登陆列表

vim /etc/samba/smb.conf
valid users=+westos   允许用户组westos登陆,用户属于westos组都可以登陆(@符也可以)
systemctl restart smb  
useradd -G westos lee
smbclient //172.25.254.133/LEE -U lee  可以登陆使用

文件共享之SMB/CIFS协议及Samba的使用_第13张图片
文件共享之SMB/CIFS协议及Samba的使用_第14张图片
3.5 设置用户是否可写

服务端:
vim /etc/samba/smb.conf
writable=yes
systemctl restart smb 
smbclient //172.25.254.133/LEE -U lee  
put和rm不行,文件系统权限没有
setfacl -m u:lee:rwx /west
setfacl -m u:westos:rwx /west
客户端:
  smbclient //172.25.254.133/LEE -U lee 
  smbclient //172.25.254.133/LEE -U westos  都可以进行写操作

文件共享之SMB/CIFS协议及Samba的使用_第15张图片
文件共享之SMB/CIFS协议及Samba的使用_第16张图片

文件共享之SMB/CIFS协议及Samba的使用_第17张图片
文件共享之SMB/CIFS协议及Samba的使用_第18张图片
3.6 设置可写列表

vim /etc/samba/smb.conf
write list=lee
systemctl restart smb  
smbclient //172.25.254.133/LEE -U lee  可以写
smbclient //172.25.254.133/LEE -U westos  不可以写

文件共享之SMB/CIFS协议及Samba的使用_第19张图片文件共享之SMB/CIFS协议及Samba的使用_第20张图片文件共享之SMB/CIFS协议及Samba的使用_第21张图片 3.7 设置可写用户组

vim /etc/samba/smb.conf
 write list=@lee
 systemctl restart smb  
 smbclient //172.25.254.133/LEE -U lee  可以执行写操作
 smbclient //172.25.254.133/LEE -U westos  不可以执行写操作
 usermod -G lee westos
 smbclient //172.25.254.133/LEE -U westos  可以执行写操作了

文件共享之SMB/CIFS协议及Samba的使用_第22张图片
文件共享之SMB/CIFS协议及Samba的使用_第23张图片
文件共享之SMB/CIFS协议及Samba的使用_第24张图片
3.7 设置匿名用户是否可以登陆

smbclient //172.25.254.133/LEE  本身匿名用户不能登陆
vim /etc/samba/smb.conf
guest ok=yes
systemctl restart smb  
smbclient //172.25.254.133/LEE    可以登陆了
但是,该身份仅在smb交互界面可以使用,不能用来挂载,需要添加参数:
vim /etc/samba/smb.conf
map to guest=bad user    
systemctl restart smb  
mount //172.25.254.133/LEE /mnt -o username=guest

文件共享之SMB/CIFS协议及Samba的使用_第25张图片
文件共享之SMB/CIFS协议及Samba的使用_第26张图片
文件共享之SMB/CIFS协议及Samba的使用_第27张图片
文件共享之SMB/CIFS协议及Samba的使用_第28张图片
3.8 设置共享文件的超户

当我添加了smb用户student后,把writable=yes可写参数打开
但是使用student用户登陆,不可写
smbclient //172.25.254.133/LEE -U student 仍然不能可写
因为getfacl列表中只对超户、lee、westos可写
我们把student设置为超户实现studnet用户可写
 vim /etc/samba/smb.conf
admin users=student
smbclient //172.25.254.133/LEE -U student 可写了
put anaconda-ks.cfg  
在服务端查看时,cd /west
 ll  上传的anaconda-ks.cfg文件所有人为root

文件共享之SMB/CIFS协议及Samba的使用_第29张图片
文件共享之SMB/CIFS协议及Samba的使用_第30张图片
文件共享之SMB/CIFS协议及Samba的使用_第31张图片

3.9 改变文件所在区组

vim /etc/samba/smb.conf
89行 workgroup=WESTOS
systemctl restart smb  
smbclient //172.25.254.133/LEE -U westos   可以看到domain的名字改变了

文件共享之SMB/CIFS协议及Samba的使用_第32张图片文件共享之SMB/CIFS协议及Samba的使用_第33张图片 3.10 smb的多用户挂载

当我使用用户lee挂载到/mnt后,//172.25.254.133/LEE 的usernmae=lee
 但是当我切换成linux用户时,同样可以查看/mnt下的文件
在客户端:yum install cifs-utils -y
umount /mnt
vim /root/smbauth
username=lee
password=lee
chmod 600 /root/smbauth
mount //172.25.254.133/LEE /mnt -o credentials=/root/smbauth
umount /mnt
mount //172.25.254.133/LEE /mnt -o credentials=/root/smbauth,sec=ntlmssp,multiuser
这时,要想查看/mnt需要进行用户的验证
su - linux
cd /mnt
cifscreds add -u westos 172.25.254.133   #进行westos用户的认证
cifscreds add -u westos 172.25.254.133   #当认证了之后再次添加认证,会提示你已经认证过
cifscreds clear -u westos 172.252.54.133 #清空认证
cifscreds add -u westos 172.25.254.133  
touch file      #建立文件 使用的用户是westos,但是客户端显示为linux用户,因为linux和westos的id=1001
exit
再次建立文件,使用的是lee,为挂载时使用的用户

credentials=/root/smbfile指定挂载时所用到的用户文件
multiuser 支持多用户认证
sec=ntlmssp 认证方式为标准smb认证方式

文件共享之SMB/CIFS协议及Samba的使用_第34张图片
在这里插入图片描述
文件共享之SMB/CIFS协议及Samba的使用_第35张图片
文件共享之SMB/CIFS协议及Samba的使用_第36张图片
文件共享之SMB/CIFS协议及Samba的使用_第37张图片 3.11 开机自动挂载

vim /etc/fstab
//172.25.254.133/LEE /mnt cifs defaults,credentials=/root/smbauth,sec=ntlmssp,multiuser
mount -a

文件共享之SMB/CIFS协议及Samba的使用_第38张图片

你可能感兴趣的:(Linux)