samba协议

基本使用

当前使用的是dockerUbuntu镜像

sudo root
apt-get install samba
touch /etc/samba/smbpasswd
smbpasswd -a root # 设置用户名为root
# 接下来会提示设置密码,根据提示操作

📮 修改配置文件

vim /etc/samba/smb.conf

📄 写入以下内容(G到最后一行,o下一行输入)

[ast]
	comment = ubuntu
	path = /home/ddd
	writable = yes
	valid users = root
	available = yes
	create mask = 0777
	directory mask = 0777
	public = yes

⚡ 重启服务

/etc/init.d/smbd restart

Linux中方法都一样,一般在etc/init.d下面都有对应的文件,使用restart刷新就好。

💡 验证

smb://user.name:user.password@url:445/ast/ /ast

此时就是可以进去虚拟机里面的目录,这个就和ftp类似,我们也是把目录给共享出去l

Samba的工作原理

Samba服务功能强大,这与其通信基于SMB/CIFS协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口;后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。

Samba的工作流程主要为四个阶段

协议协商

客户端在访问Samba服务器时,首先由客户端发送一个SMB negprot请求数据报,并列出它所支持的所有SMB协议版本。服务器在接收到请求信息后开始响应请求,并列出希望使用的协议版本,选择最优的SMB类型。如果没有可使用的协议版本则返回oXFFFFH信息,结束通信。

建立连接

当SMB协议版本确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SesssetupX请求数据报实现的。客户端发送一对用户名和密码或一个简单密码到服务器,然后服务器通过发送一个SesssetupX请应答数据报来允许或拒绝本次连接。

访问共享资源

当客户端和服务器完成了协商和认证之后,它会发送一个Tcon或SMB TconX数据报并列出它想访问网络资源的名称,之后服务器会发送一个SMB TconX应答数据报以表示此次连接是否被接受或拒绝。

断开连接

连接到相应资源,SMB客户端就能够open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。

Samba相关进程

Samba服务是由两个进程组成,分别是nmbd和smbd。

nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。

smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。

samba服务器的安全模式

samba服务器有share、user、server、domain和ads 五种安全模式,用来适应不同的企业服务器需求。

(1)share安全级别模式

客户端登录samba服务器,不需要输入用户名和密码就可以浏览samba服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba服务器的安全性。

(2)user安全级别模式

客户端登录samba服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。

(3)server安全级别模式

客户端需要将用户名和密码,提交到指定的一台samba服务器上进行验证,如果验证出现错误,客户端会用user级别访问。

(4)domain安全级别模式

如果samba服务器加入windows域环境中,验证工作服将由windows域控制器负责,domain级别的samba服务器只是成为域的成员客户端,并不具备服务器的特性,samba早期的版本就是使用此级别登录windows域滴。

(5)ads安全级别模式

当samba服务器使用ads安全级别加入到windows域环境中,其就具备了domain安全级别模式中所有的功能并可以具备域控制器的功能。