一、samba简介
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
二.Samba的应用环境
一个samba服务器实际上包含了两个服务器程序:smbd和nmbd。
Smbd是samba的核心。它负责建立对话进程、验证用户身份、提供对文件系统和打印机的访问机制,只有smb服务启动,才能实现文件的共享。Nmbd实现了“Network Brower”(网络浏览服务器)的功能,实现NETBIOS(本地名称解析)功能,如果该服务没有启动,则客户端不能通过Linux系统共享的工作组名称访问共享文件,而只能通过IP地址来访问共享的文件。Samba还包含了一些实用工具。Smbclient是一个SMB客户工具,有shell-based用户界面并同FTP有些类似。应用它可以复制其它的SMB服务器资源,还可以访问其它SMB服务器提供的打印机资源。
三.SMB协议
MB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居就是靠它实现的。SMB 是一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源。SMB一开始的设计是在NetBIOS协议上运行的,而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上。NetBIOS 使用下列端口:UDP/137(NetBIOS 名称服务)、UDP/138(NetBIOS 数据报服务)、TCP/139(NetBIOS 会话服务);SMB 使用下列端口:TCP/139、TCP/445。 #NetBIOS用于局域网内主机名发现。
四.samba的工作原理
Samba服务功能强大,这与其通信基于SMB/CIFS协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口;后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。
1.samba的配置
root@smaba ~]# rpm -qa|grep samba
samba-common-libs-4.10.16-5.el7.x86_64
samba-client-4.10.16-5.el7.x86_64
samba-common-4.10.16-5.el7.noarch
samba-4.10.16-5.el7.x86_64
samba-client-libs-4.10.16-5.el7.x86_64
samba-libs-4.10.16-5.el7.x86_64
samba-common-tools-4.10.16-5.el7.x86_64
samba在linux已经下载安装完毕
2.启用与停止samba服务,设置开机启动
[root@smaba ~]# systemctl start smb
[root@smaba ~]# systemctl enable smb
[root@smaba ~]# systemctl restart smb
[root@smaba ~]# systemctl stop smb
[root@smaba ~]# systemctl start smb
3.samba部署
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
load printers = no
cups options = raw
printcap name = /del/null
# obtin a list of printers automatically on UNIX System V system:
printcap name = lpstar
printing = bsd
disable spoolss = yes
[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
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[share]
path = /opt/share
browseable = yes
public = yes
writable =yes
[root@smaba ~]# yum install -y net-tools
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.nju.edu.cn
* extras: mirrors.bupt.edu.cn
* updates: mirrors.nju.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/4): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 249 kB 00:00:00
(3/4): base/7/x86_64/primary_db | 6.1 MB 00:00:01
(4/4): updates/7/x86_64/primary_db | 21 MB 00:00:13
软件包 net-tools-2.0-0.25.20131004git.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@smaba ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 5571/smbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 5571/smbd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1194/rpcbind
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2081/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1538/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1537/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1832/master
tcp6 0 0 :::445 :::* LISTEN 5571/smbd
tcp6 0 0 :::139 :::* LISTEN 5571/smbd
tcp6 0 0 :::111 :::* LISTEN 1194/rpcbind
tcp6 0 0 :::22 :::* LISTEN 1538/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1537/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1832/master
将network-scripts/ifcfg-ens33 中的onboot改成yes
4.创建smaba用户
root@smaba ~]# smbpasswd -a root
New SMB password:
Retype new SMB password:
[root@smaba ~]# pdbedit -L
root:0:root