SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API)。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为 CIFS(Common Internet File System),并且加入了许多新的特色。

      在仅有 Windows 系统的网络中,通常使用 SMB 协议来共享打印机.

        用smb协议在Linux和Windows进行数据共享是局域网内经常遇到的事,话说这个smb协议绝对是个两面派,不管是Linux还是Windows,两头都能说上几句话,颇似当年的“翻译官”.

        在windows下访问Linux上的共享数据很容易,最菜也是最方便的办法是直接在网上邻居里搜索,输入Linux系统的IP、用户名、密码就搞定。但反过来就不是特别方便了(与windows相比而言,谁让windows就是那么方便呢),比如你首先得确认windows系统上的共享资源,这需要用下面这个命令:
smbclinet -L 对方的IP地址 -U 用户名
确认后系统会要你输入密码,然后你才能看到windows上的共享资源。但现在只是能看而已,你接下来还得把这个共享资源挂载到自己的机器上,所以你会用到下面这种复杂到BT的命令,更糟糕的是这个命令在不同的Linux上名字也不同,事实上,就算是同一家公司的Linux,因版本不同,这个命令也不同,麻烦!


   在Linux下用Smbmount命令挂载 


Linux客户端要连接samba/windows文件服务器时,需使用smbmount或mount指令:
  smbmount //sambaserver/d /mnt/d -o username=aaa,password=bbb
  smbmount //sambaserver/d /mnt/d -o username=aaa%bbb
  mount -t smbfs -o username=aaa,password=bbb //sambaserver/d /mnt/d
  mount -t smbfs -o username=aaa%bbb //sambaserver/d /mnt/d
  smbclient //sambaserver/d -U username%password

 

如果出现ERRDOS - ERRnosuchshare.....

请注意IP地址跟的文件夹不是服务器上的 而是网络上看到的

比如服务器上看到的是/home/abc

那么命令应该是

mount -o username=aaa,password=bbb //xxx.xxx.xxx.xxx/abc /mnt


  注意:
  1. 指定uid或gid参数,也能指定用户的身份(uid=后面可接uid号或用户名),如:
  smbmount //test/d /mnt/d -o uid=grind
  2. smbmount也能写作mount.smbfs,这是个符号链接;
  3. smbmount的参数必须写在最后,而mount的参数位置能变化;
  4. 由于//sambaserver/d格式能表明是要mount上smbfs,所以mount的-t smbfs参数能省掉;
  5. 如果命令行中不加入密码,下一行中系统会提示你输入;
  6. smbclient成功后,会出现ftp类似的界面,请仿照ftp进行