Next Previous Contents

3. Samba 客户端工具介绍

要获取Samba客户端工具需要安装smbclientsmbfs两个软件包

安装命令:

        apt-get install smbclient smbfs

3.1 smbclient软件包提供如下工具:

smbclient

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

findsmb

用于查看本网段提供网络共享服务的机器

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]

smbget

类似于wget的下载工具, 用于下载SMB资源.

详细用法参阅手册页: smbget manpage

smbstar

用于直接备份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

显示共享目录树形结构

比如:

~# 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)

smbcacls

用于获取或设定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

smbcquotas

用于设定或获取NTFS分区格式共享目录的磁盘配额

rpcclient

用来查看以及设置共享打印机驱动程序.

~# 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]

smbspool

使用SMB服务器共享的打印机.

3.2 smbfs软件包提供如下工具

smbmount

用于将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

命令格式:

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

3.3 添加用户

此用户必须是系统用户

比如:

# smbpasswd tony

3.4 服务器的启动与停止

/etc/init.d/samba start|restart|stop

3.5 smb.conf的一般布局

[global]                //[global]段的开始
...
[homes]                 //[global]段的结束,[home]段的开始
...
[printers]              //[homes]段的结束,[printers]段的开始
...
[sharedoc]              //[printers]段的结束,[sharedoc]段的开始
...

其中

[global]        和服务器的整体功能相关的一些参数,系统角色和缺省值
[homes]         利用这个特殊共享,用户可以连接到他们的主目录,而不要求为每个用户定义一个特定的共享
[printers]      从/etc/printcap中创建打印机资源
[sharedoc]      为用户自定义共享节,名字和个数可以根据自己的需求设置
[global]        之外的任何节都被认为是共享资源
                节标题忽略大小写

语法和语义

参数=值

“\”表示继续到下一行

注释行用“#”或“;”字符开头

变量,都以“%”字符作为前缀

includecopy 参数可以用于向配置文件中插入或复制节.

3.6 Debian Gnu/Linux lenny下的默认配置


[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

3.7 SAMBA系统用户操作

添加系统用户

# adduser etony

添加samba用户

# 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.


Next Previous Contents