要获取Samba客户端工具需要安装smbclient和smbfs两个软件包
安装命令:
apt-get install smbclient smbfs
SAMBA客户端程序, 与FTP相类似的一个命令行程序
~# smbclient //192.168.102.43/movies -U tony
Password:
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ?
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
md mget mkdir more mput
newer open posix posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
!
smb: \>
也可以这样:
~# smbclient \\\\192.168.102.43\\movies -U tony
Password:
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \>
smbclient工具的常用命令选项:
[-s smb.conf] 指定使用的配置文件
[-R name resolve order]指定使用的名称解析顺序
[-p port]指定访问端口
[-I dest IP] 规定要连接的服务器的I P地址
[-U username]规定在建立连接后登录进入服务器所使用的用户名称
[-L NetBIOS name] 可得到服务器支持的所有服务列表
命令示例:
~# smbclient -L //192.168.102.43 -U tony
Password:
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
E$ Disk Default share
USBKiller Disk
IPC$ IPC Remote IPC
D$ Disk Default share
print$ Disk Printer Drivers
movies Disk
Z$ Disk Default share
F$ Disk Default share
ADMIN$ Disk Remote Admin
C$ Disk Default share
session request to 192.168.102.43 failed (Called name not present)
session request to 192 failed (Called name not present)
Domain=[TONYBOX] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
Server Comment
--------- -------
Workgroup Master
--------- -------
而下面的命令则可以得到目录中的文件列表
~# smbclient //192.168.102.43/USBKiller -c dir -U tony
用于查看本网段提供网络共享服务的机器
debian-server:~# findsmb
*=DMB
+=LMB
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
---------------------------------------------------------------------
192.168.201.2 DBSRV [WORKGROUP] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
192.168.201.11 GZJST-ZWZX +[WORKGROUP] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
169.254.205.12 unknown nis name
192.168.201.15 NETMAN [GZJS] [Windows 5.0] [Windows 2000 LAN Manager]
192.168.201.16 NEWSRV [GZJS] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
192.168.201.18 XZSP [GZJS] [Windows Server 2003 3790 Service Pack 2] [Windows Server 2003 5.2]
192.168.201.130 C4E24347D5DC443 [WORKGROUP] [Windows 5.0] [Windows 2000 LAN Manager]
192.168.201.222 DEBIAN-SERVER +[MSHOME] [Unix] [Samba 3.0.26a]
类似于wget的下载工具, 用于下载SMB资源.
详细用法参阅手册页: smbget manpage
用于直接备份SMB/CIFS共享资源到UNIX磁带设备的shell脚本,是个在smbclient基础上建立的非常小的shell脚本,用于把SMB共享资源直接写到磁带上。
用法:
smbtar -s server -u user -p password -x sharename -t output
其中server是服务器的名字,user为用户名,password为密码,sharename为要备份的共享文件名,output为备份文件的名字.
例:
#smbtar -s 10.0.0.2 -u redhat -p redhat -x share -t share.tar
显示共享目录树形结构
比如:
~# smbtree
MSHOME
\\DEBIAN-SERVER debian-server server
\\DEBIAN-SERVER\tony Home Directories
\\DEBIAN-SERVER\netlogon Network Logon Service
\\DEBIAN-SERVER\print$ Printer Drivers
\\DEBIAN-SERVER\IPC$ IPC Service (debian-server server)
用于获取或设定NT文件或目录的访问权限列表.
比如:
# smbcacls //192.168.102.43/movies -U tony hfs.exe
Password:
REVISION:1
OWNER:\Everyone
GROUP:\Everyone
~# smbcacls //192.168.102.43/USBKiller -U tony update
Password:
REVISION:1
OWNER:TONYBOX\tony
GROUP:TONYBOX\None
ACL:NT AUTHORITY\SYSTEM:ALLOWED/0/FULL
ACL:TONYBOX\tony:ALLOWED/0/FULL
ACL:TONYBOX\Guest:ALLOWED/19/READ
ACL:NT AUTHORITY\SYSTEM:ALLOWED/16/FULL
ACL:NT AUTHORITY\SYSTEM:ALLOWED/27/0x10000000
ACL:TONYBOX\tony:ALLOWED/16/FULL
ACL:TONYBOX\tony:ALLOWED/27/0x10000000
用于设定或获取NTFS分区格式共享目录的磁盘配额
用来查看以及设置共享打印机驱动程序.
~# rpcclient -c 'getdriver "HP LaserJet 1022n"' 192.168.102.43 -U tony
Password:
[Windows NT x86]
Printer Driver Info 3:
Version: [3]
Driver Name: [HP LaserJet 1022n]
Architecture: [Windows NT x86]
Driver Path: [\\192.168.102.43\print$\W32X86\3\IMFNT5.DLL]
Datafile: [\\192.168.102.43\print$\W32X86\3\SDhp1020.SDD]
Configfile: [\\192.168.102.43\print$\W32X86\3\SDNT5UI.DLL]
Helpfile: [\\192.168.102.43\print$\W32X86\3\SDhp1020.HLP]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDhp1020.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUhp1020.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUhp1020.ent]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZJBIG.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZLhp1020.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUxml.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\xerces-c.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\hp1020.img]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\hp1022.img]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\hp1022n.img]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\zshp1020.exe]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZSHP1020.HLP]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SUHP1020.VER]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\vshp1020.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\IMFPRINT.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\QDPRINT.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\Sd32.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDIMF32.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDDM32.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDDMUI.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\Sr32.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZGDI32.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDhp1020.UNZ]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZSPOOL.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZSPOOL32.EXE]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZTAG32.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\ZUNINST.EXE]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\zlm.dll]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\IMF32.DLL]
Dependentfiles: [\\192.168.102.43\print$\W32X86\3\SDNTUM4.DLL]
Monitorname: [HPLJ1020LM]
Defaultdatatype: [RAW]
使用SMB服务器共享的打印机.
用于将windows的共享目录挂载到LINUX本机, 功能与 mount -t smbfs 可以装载一个Linux SMB文件系统。它通常在带 "-t smbfs" 选项执行 mount(8) 命令时被作为mount.smbfs执行。当然内核必须支持smbfs文件系统 格式为 smbmount 共享资源地址 加载点 -o 参数
/mnt# mkdir smb
/mnt# smbmount //192.168.102.43/movies /mnt/smb -o username=tony
Password:
/mnt#
常用参数
username=<arg> SMB 用户名 username
password=<arg> SMB 密码 assword
port=<arg> SMB服务器端口remote SMB port number
fmask=<arg> 文件 umask
dmask=<arg> 目录 umask
iocharset=<arg> Linux字符集 (iso8859-1, utf8)
codepage=<arg> 服务器字符集 codepage (cp850)
guest 以匿名方式登录don't prompt for a password
ro 只读方式加载mount read-only
rw 读写方式加载mount read-write
卸载则需要使用smbumount.
命令格式:
smbumount {mount-point}
<tscreen><verb>
<P>
例如
<P>
<tscreen><verb>
~# smbumount /mnt/smb
<tscreen><verb>
<P>
<SECT2> smbmnt
<P>
是装载 SMB 文件系统的协助工具,用于协助 <tt/smbmount/ 程序完成实际装载 SMB 共享资源. <tt/smbmnt/ 必须以 <tt/root/ 用 <tt/setuid/ 来安装,这样普通用户才能装载他们的 SMB 共享资源。它在装载点和装载目录上检查用户是否有写权限。
<P>
<SECT> Samba 服务器的安装与配置
<P>
<SECT1> 安装对应软件包
<P>
<tscreen><verb>
~# apt-get update
~# apt-get install samba samba-common
此用户必须是系统用户
比如:
# smbpasswd tony
/etc/init.d/samba start|restart|stop
[global] //[global]段的开始
...
[homes] //[global]段的结束,[home]段的开始
...
[printers] //[homes]段的结束,[printers]段的开始
...
[sharedoc] //[printers]段的结束,[sharedoc]段的开始
...
其中
[global] 和服务器的整体功能相关的一些参数,系统角色和缺省值
[homes] 利用这个特殊共享,用户可以连接到他们的主目录,而不要求为每个用户定义一个特定的共享
[printers] 从/etc/printcap中创建打印机资源
[sharedoc] 为用户自定义共享节,名字和个数可以根据自己的需求设置
[global] 之外的任何节都被认为是共享资源
节标题忽略大小写
语法和语义
参数=值
“\”表示继续到下一行
注释行用“#”或“;”字符开头
变量,都以“%”字符作为前缀
include 和 copy 参数可以用于向配置文件中插入或复制节.
[global] #全局设定
workgroup = MSHOME #设定samba server的工作组为MSHOME, 即在网上邻居中所处的工作组为 MSHOME;
; netbios name = #你可以指定你samba服务器的netbios名字。通过windows机器的网络邻居可以看到这个名字。如果你没有特别指定,Linux将会使用它自己的网络名作为netbios名。
server string = %h server #设定samba server 的服务器说明
; wins support = no
dns proxy = no
log file = /var/log/samba/log.%m #设定日志文件的存储位置 %m代表访问机器名称
max log size = 1000 #设定sambaserver所能存储日志的最大容量, 单位:KB
syslog = 0 #设定日志级别,级别越高,记录内容越多
panic action = /usr/share/samba/panic-action %d
security = user #设定服务器访问的安全登记, user: 使用用户名密码登录
encrypt passwords = true #是否对samba用户的密码进行加密处理
passdb backend = tdbsam #设定SAMBA用户密码的存放方式, 为tdbsam时密码存放在 /var/lib/samba/passdb.tdb 文件中
#如果设为smbpasswd方式则需要使用smb passwd file 来指定密码文件存放路径
obey pam restrictions = yes #当用户认证时,服从PAM的管理限制
; guest account = nobody #设定系统的试用账号
invalid users = root #禁止root用户通过网络访问
; unix password sync = no #设定在系统添加用户时是否同时添加到samba用户列表
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
socket options = TCP_NODELAY
#共享项目设定
[homes] #访问者的主目录设定
comment = Home Directories #说明文字
browseable = no #在浏览资源时, 是否显示共享名称, 设为否, 则必须使用完整路径在能访问
writable = no #是否可以写操作
create mask = 0700 #创建文件时的默认权限
directory mask = 0700 #创建目录时的默认权限
valid users = %S #可以访问的用户名单
#打印机设定
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba #共享资源的完整路径
printable = yes #是否允许打印
public = no #是否可以匿名访问, 设为no, 则必须使用用户名密码访问
writable = no
create mode = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes #是否设定问只读模式
guest ok = n
测试smb.conf 配置文件
~# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# adduser etony
# smbpasswd -a etony
New SMB password:
Retype new SMB password:
Added user etony.
# smbpasswd etony
New SMB password:
Retype new SMB password:
# smbpasswd -x etony
Deleted user etony.