samba
Samba使用NetBIOS通讯协议,就像NFS是架构在RPC Server上面一样,Samba是架构在NetBIOS(Network Basic Input/Output System)这个通讯协议上面所开发出来的,
其在Linux/unix系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易。在部署windows、Linux/unix混合平台的企业环境时,选用Samba可以很好的解决不同系统之间的文件互访问题。
工作模式
Samba使用nmbd、smbd这两个服务来控制定位主机和权限分配:
- nmbd
用来管理工作组、NetBIOS name等的解析。主要利用UDP协议开启137,138端口来负责名称解析的任务。
对应进程:nmdb
- smbd
主要用来管理Samba主机分享的目录,档案与打印机。主要利用TCP协议传输数据,开放端口为139,445
对应进程:smdb
共享方式
SAMBA 服务器四种共享方式 : share、user、server、domain
默认安全级别为user,要求提供用户验证。对于匿名共享服务,一般将安全级别设为share
配置文件
- samba服务的配置文件是 /etc/samba/smb.conf
smb.conf文件中包括4种结构:
- [Global]
Globa用于定义全局参数和缺省值
- [Homes]
Homes用于用户的home目录共享
- [printers]
printers用于定义打印机共享
- [Userdefined_shareName]
Userdefined_ShareName用于自定义共享(可有多个)。
搭载User模式的samba服务
[root@localhost ~]# useradd -M test1 服务端新建用户test1
[root@localhost ~]# smbpasswd -a test1 为test1设置密码
New SMB password:
Retype new SMB password:
Added user test1
[root@localhost ~]# echo 'test1 = hide ' > /etc/samba/smbusers 为隐藏账号test1,为test1做账号映射
[root@localhost ~]# cd /media
[root@localhost media]# ls
[root@localhost media]# mkdir share
[root@localhost media]# chown test1.test1 share/ 为文件修改所属人及组
[root@localhost media]# vim /etc/samba/smb.conf
......
[global]
workgroup = SAMBA
security = user
username map = /etc/samba/smbusers 添加内容,指定解析名字的文件位置
......
[test1]
path = /media/share 共享文件路径
write list = hide 可以执行写权限的用户
read only = No 可写可读
browseable = yes 可查看共享文件
guest ok = yes 所有人均可访问共享目录
public = yes 允许匿名用户访问
[root@localhost media]# systemctl enable --now smb nmb 启动服务
[root@localhost ~]# smbclient -L 192.168.197.131 -U hide
Enter SAMBA\hide's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
test1 Disk
IPC$ IPC IPC Service (Samba 4.11.2)
SMB1 disabled -- no workgroup available
[root@localhost ~]# vim /etc/fstab 编辑挂载文件,实现自动挂载
//192.168.197.131/media/share /media cifs defaults,username=hide,password=123456 0 0
linux效果
windows效果
搭载share模式的samba服务
[root@localhost share]# mkdir /media/nobody
[root@localhost share]# chmod 777 /media/nobody/ 创建共享目录
[root@localhost share]# vim /etc/samba/smb.conf 配置文件编写
[global]
workgroup = SAMBA
security = user
# username map = /etc/samba/smbusers
map to guest = Bad User 确定模式为share
passdb backend = tdbsam
[test2]
path = /media/nobody 指定目录
browseable = yes
guest ok = yes
writable = yes
public = yes
[root@localhost share]# systemctl restart smb nmb 重启服务
查看共享文档
[root@localhost ~]# smbclient -L 192.168.197.128 -U 'Bad User'
Enter SAMBA\Bad User's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
test1 Disk
test2 Disk
IPC$ IPC IPC Service (Samba 4.11.2)
SMB1 disabled -- no workgroup available
挂载
[root@localhost ~]# mount -t cifs //192.168.197.128/media/nobody /opt -o username='Bad User'
linux效果
windows效果