1.Smbclient介绍
Smbclient(samba client)是基于SMB协议的,用于存取共享目标的客户端程序。
1.1 SMB 协议介绍
服务器信息块(SMB)协议是一种 IBM 协议,用于在计算机间共享文件、打印机、串口等。SMB 协议可以用在因特网的TCP/IP协议之上,也可以用在其它网络协议如 IPX 和 NetBEUI 之上。
SMB 是一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机、邮件槽(mailslot)、命名管道(named pipe)等资源。
在 TCP/IP 环境下,客户机通过 NetBIOS over TCP/IP(或 NetBEUI/TCP 或 SPX/IPX)连接服务器。一旦连接成功,客户机可发送 SMB 命令到服务器上,从而客户机能够访问共享目录、打开文件、读写文件,以及一切在文件系统上能做的所有事情。
从 Windows 95 开始,Microsoft Windows 操作系统(operating system)都包括了客户机和服务器 SMB 协议支持。Microsoft 为 Internet 提供了 SMB 的开源版本,即通用 Internet 文件系统 (CIFS)。与现有 Internet应用程序如文件传输协议(FTP)相比, CIFS 灵活性更大。对于 UNIX 系统,可使用一种称为 Samba 的共享软件。
SMB 定义了两级安全保护:
- 共享级保护(Share Level Protection)应用于服务器共享目录级。每个共享目录都需要提供一个访问口令。只有口令通过,客户机才能访问所有共享文件。
- 用户级保护(Usr Level Protection)应用于共享目录中的单独文件,基于用户访问权限。每个用户(客户机)必须登录服务器并且获得服务器的认证许可。一旦认证通过,客户 机会获得一个 UID 。在后来客户机访问服务器的过程中都需要使用该 UID 。
2.Smbclient命令使用技巧
2.1 Smbclient 功能说明
可存取SMB/CIFS服务器的用户端程序。
2.2 语法
smbclient [网络资源][密码][-EhLN][-B][-d<排错层级>][-i<范围>][-I][-l<记录文件>]
[-M][-n][-O<连接槽选项>][-p][-R<名称解析顺序>][-s<目录>][-t<服务器字 码>]
[-T][-U<用户名称>][-W<工作群组>]
补充说明:SMB与CIFS为服务器通信协议,常用于 Windows95/98/NT等系统。smbclient可让Linux系统存取Windows系统所分享的资源。
2.3 参数
网络资源 网络资源的格式为//服务器名称/资源分享名称。
密码 输入存取网络资源所需的密码。
参数 | 详细讲解 |
---|---|
-B | 传送广播数据包时所用的IP地址。 |
-d | < 排错层级> 指定记录文件所记载事件的详细程度。 |
-E | 将信息送到标准错误输出设备。 |
-h | 显示帮助。 |
-i | < 范围> 设置NetBIOS名称范围。 |
-I | 指定服务器的IP地址。 |
-l | < 记录文件> 指定记录文件的名称。 |
-L | 显示服务器端所分享出来的所有资源。 |
-M | 可利用WinPopup协议,将信息送给选项中所指定的主机。 |
-n | 指定用户端所要使用的NetBIOS名称。 |
-N | 不用询问密码。 |
-O | < 连接槽选项> 设置用户端TCP连接槽的选项。 |
-p | 指定服务器端TCP连接端口编号。 |
-R | < 名称解析顺序> 设置NetBIOS名称解析的顺序。 |
-s | < 目录> 指定smb.conf所在的目录。 |
-t | < 服务器字码> 设置用何种字符码来解析服务器端的文件名称。 |
-T | 备份服务器端分享的全部文件,并打包成tar格式的文件。 |
-U | < 用户名称> 指定用户名称。 |
-W | < 工作群组> 指定工作群组名称。 |
2.4 使用举例
- 列出某个 IP 地 址所提供的共享文件夹
smbclient -L 198.168.0.1 -U username%password
- 像 FTP 客 户端一样使用 smbclient
smbclient //192.168.0.1/tmp -U username%password
执行smbclient命令成功后,进入smbclient环境,出现提示符: smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput
等。通过这些命令,我们可以访问远程主机的共享资源。
- 直接一次性使用 smbclient 命 令
smbclient -c "ls" //192.168.0.1/tmp -U username%password
smbclient -c "get test.txt" //192.168.0.1/tmp -U username%password