文件服务-SAMBA
介绍
历史
- 1987年,微软公司和英特尔公司共同制定了SMB(Server Messages Block),服务器消息块协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。
- 1991年,当时还在读大学的Tridgwell为解决Linux系统与Windows系统之间的文件共享问题,基于SMB协议开发出了 SMBServer服务程序。这是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
- Tridgwell想把这款软件的名字SMBServer注册成为商标,但却被商标局以SMB是没有意义的 字符而拒绝了申请。
- 后来Tridgwell不断翻看词典,突然看到一个拉丁舞蹈的名字—Samba,而且这个热情洋溢的舞蹈名字中又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生。
- Samba服务程序现在已经成为在Linux系 统与Windows系统之间共享文件的最佳选择。
- 基于C/S架构
概述
-
SMB协议实现文件共享,也称为CIFS(Common Internet File System)
-
是Windows和Linux/Unix系统之间共享文件的一种协议
-
客户端主要是Windows
-
使用NetBIOS的名字解释器让Linux机器可以在Windows的网络邻居中被看到,从而和Windows进行相互沟通,共享文件和打印机
-
支持多节点同时挂载以及并发写入
-
主要用于windows和Linux下的文件共享、打印共享
-
实现匿名用户与本地用户文件共享
NetBIOS协议
-
NetBIOS是Network Basic Input/Output System的简称,网络基本输入输出协议。协议,一般指能用于局域网通信的一套API,是由IBM公司开发的。
-
通过NetBIOS协议获得计算机名称,然后把计算机名称解析为对应的IP地址
主要进程
-
smbd进程:控制发布共享目录与权限、负责文件传输,基于TCP
端口号:139,445
-
nmbd进程:用于名称解析netbios,基于UDP
端口号:137 138
配置文件
[root@samba ~]# vim /etc/samba/smb.conf
[global] #全局选项
workgroup = SAMBA #定义samba服务器所在的工作组
security = user #认证模式:share匿名|user用户密码|server外部服务器用户密码
passdb backend = tdbsam #密码格式
printing = cups
printcap name = cups
load printers = yes #加载打印机
cups options = raw #打印机选项
[homes] #局部选项(共享名称)
comment = Home Directories #描述
valid users = %S, %D%w%S
browseable = No #隐藏共享名称
read only = No #只读
inherit acls = Yes
[printers] #局部选项(共享名称)
comment = All Printers
path = /var/tmp #本地的共享目录
printable = Yes #打印选项
create mask = 0600 #创建文件的权限
browseable = No #需要帐号和密码访问
guest ok = no
[print$] #局部选项(共享名称)
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
SAMBA搭建共享文件
要求
- 共享/samba/share 目录
- 允许在共享目录中创建或删除文件
环境准备
[root@server1 ~]# hostnamectl set-hostname samba
[root@server1 ~]# su
[root@samba ~]#
[root@samba ~]# systemctl stop firewalld.service
[root@samba ~]# systemctl disable firewalld.service
[root@samba ~]# systemctl status firewalld.service
[root@samba ~]# setenforce 0
[root@samba ~]# sed -i 's/enforced/disabled/' /etc/selinux/config
[root@samba ~]# getenforce
安装
[root@samba ~]# yum install -y samba
创建共享目录
[root@samba ~]# mkdir /samba/share -p
编写配置文件
[root@samba ~]# vim /etc/samba/smb.conf
#追加
[samba_share]
comment = Samba Service
path = /samba/share
guest ok = No
writable = Yes
创建一个用户,samba认证
[root@samba ~]# useradd user01
[root@samba ~]# smbpasswd -a user01
New SMB password:#1
Retype new SMB password:#1
Added user user01.
[root@samba ~]# pdbedit -L
user01:1001:
启动服务
[root@samba ~]# systemctl start smb
[root@samba ~]# systemctl start nmb
为user01设置权限
[root@samba ~]# setfacl -m u:user01:rwx /samba/share/
基于Windows文件共享
Windows+x–>控制面板–>大图标–>程序与功能–>启用或关闭Windows功能–>勾选SMB 1.0/CIFS文件共享支持–>重启
此电脑–>计算机–>映射网络驱动器–>
\\192.168.226.10\samba_share
#SAMBA标签可能是smb_share等,如果连接不上SAMBA服务,可以尝试更换标签
查看标签
yum install -y samba-client
smbclient -L 192.168.226.10 -U user01
基于Linux文件共享
[root@server2 ~]# yum install -y samba-client
[root@server2 ~]# smbclient -L 192.168.226.10 -U user01
Enter SAMBA\user01's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
samba_share Disk Samba Service
IPC$ IPC IPC Service (Samba 4.10.16)
user01 Disk Home Directories
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
SAMBA Samba 4.10.16
Workgroup Master
--------- -------
SAMBA SAMBA
[root@server2 ~]# smbclient //192.168.226.10/samba_share -U user01
Enter SAMBA\user01's password:
Try "help" to get a list of possible commands.
smb: \> help
? allinfo altname archive backup
blocksize cancel case_sensitive cd chmod
chown close del deltree dir
du echo exit get getfacl
geteas hardlink help history iosize
lcd link lock lowercase ls
l mask md mget mkdir
more mput newer notify open
posix posix_encrypt posix_open posix_mkdir posix_rmdir
posix_unlink posix_whoami print prompt put
pwd q queue quit readlink
rd recurse reget rename reput
rm rmdir showacls setea setmode
scopy stat symlink tar tarmode
timeout translate unlock volume vuid
wdel logon listconnect showconnect tcon
tdis tid utimes logoff ..
!
smb: \> ls
. D 0 Sat Aug 21 15:32:02 2021
.. D 0 Sat Aug 21 13:20:25 2021
新建 DOC 文档.doc A 9216 Sat Aug 21 15:32:02 2021
17811456 blocks of size 1024. 15881848 blocks available
smb: \> quit
把SAMBA挂载到Linux中
[root@server2 ~]# mkdir /samba_mount
[root@server2 ~]# yum install -y cifs-utils
[root@server2 ~]# mount.cifs -o user=user01,pass=1 //192.168.226.10/samba_share /samba_mount
ftp&nfs&samba比较
服务 | 比较 |
---|---|
ftp | 支持局域网访问,也支持外网访问 |
nfs | 仅支持局域网访问,侧重于Linux与Linux文件共享,挂载方式:mount.nfs |
samba | 仅支持局域网访问,侧重于Windows与Linux文件共享,挂载方式:mount.cifs |