天天看点

smb & linux

     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进行

继续阅读