SMB协议Server Message Block
SMB 一种客户机/服务器、请求/响应协议。通过 SMB
协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB
协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。
CIFS
客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
本实验可以使用windows做服务器去共享文件,由于环境原因,这里暂不演示。下面内容都是基于Linux系统。
Linux做服务器:
环境:配置网络,yum源配置,关闭火墙,selinux处于enforcing状态
yum search samba
yum install samba.x86_64
主配置文件 /etc/samba.conf
mkdir /westos ###建立之后的共享目录
semanage fcontext -a -t samba_share_t '/westos(/.*)?'
###SELINUX在ENFORCING下使用【更改安全上下文】可以在smb.conf.example看到更改说明
restorecon -RvvF /westos/
vim /etc/samba.conf
[LEE] ###共享目录查询/可见名称 【在windows上查看的目录名】
path = /westos ###共享目录
systemctl restart smb
systemctl enable smb
systemctl stop firewalld
useradd hahaha
smbpasswd -a hahaha ###smb用户必须为本地存在的用户 【添加smb用户】
linux做客户端【测试pc】:
yum install samba-client.x86_64 -y
smbclient -L //172.25.254.100 ###列出服务端所共享的目录
###匿名用户查看,没设置root密码,登陆时两次回车即可
smbclient //172.25.254.100/lee -U hahaha ###登陆 ##只能ls查看
或者
挂载后可以使用【写】 【这里写不了,需要后续开启权力】
mount //172.25.254.100/lee /mnt -o username=hahaha,password=redhat
df
cd /mnt
ls
【smb用户管理:】
pdbedit -L ###查看smb用户
smbpasswd -a user ###添加用户
pdbedit -x user ###删除smb用户
smb的一些配置参数:
vim /etc/samba/smb.conf
comment = westos dir ###说明
browseable = no ###隐藏,但可以使用
【smbclient //172.25.254.199/lee -U xyy】可以直接登陆使用
valid users = xyy ###只允许xyy去登陆访问
valid users = +xyy ###xyy的组成员可以登陆【+可换为@】
writable = yes ###可写
write list = xyy ###只有xyy这个用户可写
write list = @xyy ###xyy组的用户可写
guset ok = yes ###匿名用户可以使用
admin users = student ###将student用户身份提升为超户
匿名用户不能直接挂载,需要更改全局设定
125行写: map to guest = bad user ###让mount指令可以识别到guset用户,从而可以挂载
mount //172.25.254.199/lee /mnt -o username=guest
df
【browseable = no】
如何可写:
服务器:给可写的设置,并且将给共享目录可写的权力
测试端:
smb 多用户挂载:隐藏使用的用户和密码,并且谁挂载,谁可以使用和查看。让非挂载的人看不到
客户端:
yum install cifs-utils -y
vim /root/smbauth
username=lee
password=lee
chmod 600 /root/smbauth
mount //172.25.254.200/lee /mnt -o credentials=/root/smbauth
###挂载的时候隐藏了密码和登陆用户 【history看不到】【原始验证】【文件中指定了登陆的用户和密码】
uname -r ###查看内核版本
mount //172.25.254.200/lee /mnt -o credentials=/root/smbauth,sec=ntlmssp,multiuser ###sec=ntlmssp提供密码验证支持 ###
cd /mnt
ls ###可以查看
su 切换一个用户
ls ###无法查看
cifscreds add -u westos 172.25.254.200 ###multiuser提供的身份支持 【验证】
密码正确就可以进入mnt,然后使用
cifscreds clear -u user ip ###清楚用户记录
cifscreds update -u user ip ###更新
touch file ###产生的文件实际上是服务器上的用户身份
大大的小小阳