LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 119|回复: 0

Samba使用教程--教全

 关闭 [复制链接]
发表于 2005-2-11 00:14:15 | 显示全部楼层 |阅读模式

  1. Samba使用大全(一)-samba服务器
  2. 1. Samba协议基础。
  3.   在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统,这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们Lan Manager和Windows NT服务器系统中,实现不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)。
  4.   随着Internet的流行,Microsoft希望将这个协议扩展到Internet上去,成为Inter net上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为 CIFS(Common Internet File System),并打算将它与NetBIOS相脱离,试图使它成为Internet上的一个标准协议。
  5.   因此,为了让Windows和Unix计算机相集成,最好的办法即是在Unix计算机中安装支持SMB/CIFS协议的软件,这样Windows客户就不需要更改设置,就能如同使用Windows NT服务器一样,使用Unix计算机上的资源了。Samba是用来实现SMB的一种软件,它的工作原理是,让NETBIOS(Windows95网络邻居的通讯协议)和SMB(Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows的NETBEUI协议让Unix计算机可以在网络邻居上被Windows计算机看到。它的功能有:
  6.      > 共享Linux磁盘给Win95/NT
  7.      > 共享Win95/NT磁盘给Linux机器
  8.      > 共享Linux打印机给win95/NT
  9.      > 共享win95/NT打印机给Linux机器。
  10.   同时它的文件服务功能比NT系统还高,而且在Windows2000之前就提供了用户磁盘空间限制的功能。
  11. 2. Samba的配置
  12.   在我写这篇文章的时候,Samba的版本已经到了2.2.2了,需要的可以通过[url]http://us1.samba.org/samba/得到最新的rpm安装包。然后执行rpm[/url] -Uvh samba-*.rpm来安装或者升级它。安装完后,可以看见/etc/samba这么一个目录,里面存放和Samba相关的一些文件,最主要的是smb.conf,现在根据配置文件讲讲它的配置选项:
  13.   a) 全局设置
  14.   workgroup = MYGROUP
  15.   定义该Samba服务器所在的工作组或者域(如果下面的security=domain的话)。
  16.   server string = MY Samba Server
  17.   设定机器的描述,当我们通过网络邻居访问的时候可以在备注里面看见这个内容,而且还可以使用samba设定的变量。这里说一下samba定义的变量:
  18. %S = 当前服务名(如果有的话)
  19. %P = 当前服务的根目录(如果有的话)
  20. %u = 当前服务的用户名(如果有的话)
  21. %g = 当前用户说在的主工作组
  22. %U = 当前对话的用户名
  23. %G = 当前对话的用户的主工作组
  24. %H = 当前服务的用户的Home目录
  25. %v = Samba服务的版本号。
  26. %h = 运行Samba服务机器的主机名
  27. %m = 客户机的NETBIOS名称
  28. %L = 服务器的NETBIOS名称
  29. %M = 客户机的主机名
  30. %N = NIS服务器名
  31. %p = NIS服务的Home目录
  32. %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
  33. %d = 当前服务进程的ID
  34. %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95)
  35. %I = 客户机的IP
  36. %T = 当前日期和时间
  37.   hosts allow = 网络或者主机
  38.   可以设置允许访问的网络和主机IP,比如允许192.168.1.0/24和192.168.2.1/32访问,就用host allow = 192.168.1.  192.168.2.1  127.0.0.1  注意后面加”.”号,各个项目间用空格隔开,记得把本机也加进去。
  39.   printcap name = printcapFile
  40.   到printcapFile(一般是/etc/printcap)这个文件中取得打印机的描述信息
  41.   load printers = yes|no
  42.   设定是否自动共享打印机而不用设置下面的[printer]一节的相关东西
  43.   printing = PrintSystemType
  44.   定义打印系统的类型,缺省是lprng,可选项有:bsd, sysv, plp, lprng, aix, hpux, qnx。
  45.   guest account = pcguest
  46.   定义游客帐号,而且需要把这个帐号加入/etc/passwd,不然它就用缺省的nobody
  47.   log file = LogFileName
  48.   定义记录文件的位置LogFileName(一般是用/var/log/samba/%m.log)
  49.   max log size = size
  50.   定义记录文件的大小size(单位是KB,如果是0的话就不限大小)
  51.   security = security_level
  52.   定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
  53. * share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
  54. * user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
  55. * server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
  56. * domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
  57.   后面三种安全级都要求用户在本Linux机器上也要系统帐户。否则是不能访问的。
  58.   password server = <NT-Server-Name>
  59.   当前面的security设定为server或者domain的时候才有必要设定它。
  60.   password level = n
  61.   这是设定针对一些SMB客户像OS/2之类而设的,这样的系统在发送用户密码的时候,会把密码转换成大写再发送,这样就和samba的密码不一致,这个参数可以设定密码里允许的大写字母个数,这样samba就根据这个数目对接收到的密码进行大小写重组,以重组过的密码尝试验证密码的正确性。n越大,组合的次数就越多,验证时间就越长,安全性也会因此变得越低。例如n=2,用户的密码是abcd,但发送出去其实是ABCD,samba就会把这个ABCD进行大小写重组,组合后的结果可以是: Abcd, aBcd, abCd, abcD, abcd, ABcd, AbCd, AbcD,aBCd,aBcD,abCD。
  62.   所以如果没有必要,就把n定为是零。这样的话samba只尝试两次,一个是接收到的密码,另一个尝试的是这个密码都是小写的情况。
  63.   username level = n
  64.   这个是对于用户名的情况,说明和上面一项类似。
  65.   encrypt passwords = yes|no
  66.   设置是否对密码进行加密,samba本身有一个密码文件/etc/samba/smbpasswd,如果不对密码进行加密则在验证会话期间客户机和服务器之间传递的是明文密码,samba直接把这个密码和Linux里的/etc/samba/smbpasswd密码文件进行验证。但是在Windows 95 OS/R2以后的版本和Windows NT SP3以后的版本缺省都不传送明文密码,要让这些系统能传送明文密码必须在其注册表里更改,比较麻烦,好的方法就是把这里的这个开关设置为yes。
  67.   smb passwd file = smbPasswordFile
  68.   设置存放samba用户密码的文件smbPasswordFile(一般是/etc/samba/smbpasswd)。
  69.   ssl CA certFile = sslFile
  70.   当samba编译的时候支持SSL的时候,需要指定SSL的证书的位置(一般在/usr/share/ssl/certs/ca-bundle.crt)。
  71.   unix password sync = yes|no
  72.   passwd program = /usr/bin/passwd %u
  73.   passwd chat = *New*UNIX*password* %n *ReType*new*UNIX*password* %n
  74.   *passwd:*all*authentication*tokens*updated*successfully*
  75.   这三项设置能否从windows的应用程序修改unix系统的用户密码
  76.   username map = UsermapFile
  77.   指定用户映射文件(一般是/etc/samba/smbusers),当我们在这个文件里面指定一行root = administrator admin的时候,客户机的用户是admin或者administrator连接时会被当作用户root看待。
  78.   include = MachineConfFile
  79.   指定对不同机器的连接采用不同的配置文件MachineConfFile(一般为了灵活管理使用/etc/samba/smb.conf.%m,由于采用了samba的变量,把配置文件和客户机的NETBIOS名称关联起来,能很容易地控制这些客户机的权限和设置)。
  80.   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
  81.   这个是网络socket方面的一些参数,能实现最好的文件传输性能。相关的选项还有SO_KEEPALIVE、 SO_REUSEADDR、SO_BROADCAST、IPTOS_LOWDELAY、IPTOS_THROUGHPUT、SO_SNDLOWAT(*)、SO_RCVLOWAT(*),带*号的要指定数值。一般如果在本地网络,就只用IPTOS_LOWDELAY,如果是有一个本地网络的,就用IPTOS_LOWDELAY TCP_NODELAY,如果是广域网络,就试试IPTOS_THROUGHPUT。
  82.   interfaces = interface1 interface2
  83.   如果有多个网络接口,就必须在这里指定。如interface = 192.168.12.2/24 192.168.13.2/24
  84.   remote browse sync = host(subnet)
  85.   这里指定浏览列表同步信息从哪里取得, 如果用host(比如192.168.3.25)或者整个子网(192.168.5.255)。
  86.   ★这里说明一下什么是浏览(Browse):
  87.   在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的计算机),这个机制就被称为浏览(Browse)。虽然SMB协议中经常使用广播的方式,但如果每次都使用广播的方式了解当前的网络资源(包括提供服务的计算机和各个计算机上的服务资源),就需要消耗大量的网络资源和浪费较长的查找时间,因此最好在网络中维护一个网络资源的列表,以方便查找网络资源。只有必要的时候,才重新查找资源,例如使用Windows下的查找计算机功能。
  88.   但没有必要每个计算机都维护整个资源列表,维护网络中当前资源列表的任务由网络上的几个特殊计算机完成的,这些计算机被称为Browser,这些Browser通过记录广播数据或查询名字服务器来记录网络上的各种资源。
  89.   Browser并不是事先指定的计算机,而是在普通计算机之间通过自动进行的推举产生的。不同的计算机可以按照其提供服务的能力,设置在推举时具备的不同权重。为了保证一个Browser停机时网络浏览仍然正常,网络中常常存在多个Browser,一个为主Browser(Master Browser),其他的为备份Browser。★
  90.   remote announce = host(subnet)
  91.   指定这些机器向网络宣告自己,而不是有Browser得到。
  92.   local master = yes|no
  93.   这个参数指定nmbd是否试图成为本地主浏览器,默认值是yes,如果设为no则samba服务器就永远都不会成为本地主浏览器。但即使设置了yes,也不等于samba服务器就会成为本地主浏览器。只是参与本地主浏览器选择。
  94.   os level = n
  95.   n的值是个整数,决定了nmbd是否有机会成为本地广播区域的工作组里的本地主浏览器,默认值是零,零则意味着nmbd失去浏览选择。如果要nmbd更有机会成为本地主浏览器的话,可以设为65。
  96.   domain master = yes|no
  97.   这个参数让nmbd成为一个域浏览器,取得各本地主浏览器的浏览列表,并将整个域的浏览列表递交给各本地主浏览器。
  98.   preferred master = yes|no
  99.   这个参数指定nmbd是否是工作组里的首要的主浏览器,如果指定为yes,nmbd在启动的时候就强制一个浏览选择。
  100.   ★Domain master和local master
  101.   工作组和域这两个概念在进行浏览时具备同样的用处,都是用于区分并维护同一组浏览数据的多个计算机。事实上他们的不同在于认证方式上,工作组中每台计算机都基本上是独立的,独立对客户访问进行认证,而域中将存在一个(或几个)域控制器,保存对整个域中都有效的认证信息,包括用户的认证信息以及域内成员计算机的认证信息。浏览数据的时候,并不需要认证信息,Microsoft将工作组扩展为域,只是为了形成一种分级的目录结构,将原有的浏览和目录服务相结合,以扩大Mircrosoft网络服务范围的一种策略。
  102.   工作组和域都可以跨越多个子网,因此网络中就存在两种Browser,一种为Domain Master Browser ,用于维护整个工作组或域内的浏览数据,另一种为Local Master Browser,用于维护本子网内的浏览数据,它和Domain Master Browser通信以获得所有的可浏览数据。划分这两种Browser 主要是由于浏览数据依赖于本地网广播来获得资源列表,不同子网之间只能通过浏览器之间的交流能力,才能互相交换资源列表。
  103.   但是,为了浏览多个子网的资源,必须使用NBNS名字服务器的解析方式,没有NBNS的帮助,计算机将不能获得子网外计算机的NetBIOS名字。Local Master Browser也需要查询NetBIOS名字服务器以获得Domain Master Browser的名字,以相互交换网络资源信息。
  104.   由于域控制器在域内的特殊性,因此域控制器倾向于被用做Browser,主域控制器应该被用作Domain Master Browser,他们在推举时设置的权重较大。★
  105.   preserve case = yes|no
  106.   short preserve case = yes|no
  107.   指定拷贝DOS文件的时候保持大小写,缺省是no
  108.   default case = lower|upper
  109.   所有的DOS文件的缺省是大写还是小写
  110.   case sensitive = yes|no
  111.   大小写敏感,一般是no,不然会出现一些问题。
  112.   b) 共享设置:
  113.   ★共享资源:
  114.   每个SMB服务器能对外提供文件或打印服务,每个共享资源需要被给予一个共享名,这个名字将显示在这个服务器的资源列表中。如果一个资源的名字的最后一个字母为$,则这个共享名就为隐藏共享,不能直接表现在浏览列表中,而只能通过直接访问这个名字来进行访问。在SMB协议中,为了获得服务器提供的资源列表,必须使用一个隐藏的资源名字IPC$来访问服务器,否则客户无法获得系统资源的列表。★
  115.   共享设置中有个比较奇怪的段:
  116.   [homes],在smb.conf文件中一般没有对这个目录的设定特定内容比如路径等。当客户机发出服务请求时,就在smb.conf文件的其它部分查找友特定内容的服务。如果没有发现这些服务,并且提供了homes段时,那么就搜索密码文件得到用户的Home目录。通过Homes段,Samba可以得到用户的Home目录并使之共享。下面是这个段的最基本的几个设置。
  117.   [homes]
  118.   comment=Home Directory
  119.   browseable=no
  120.   writable=yes
  121.   比较正常的共享的配置如下例:
  122.            [MyShare]
  123.            comment = grind’s file
  124.            path = /home/grind
  125.            allow hosts = host(subnet)
  126.            deny hosts = host(subnet)
  127.            writable = yes|no
  128.            user = user(@group)
  129.            valid users = user(@group)
  130.            invalid users = user(@group)
  131.            read list = user(@group)
  132.            write list = user(@group)
  133.            admin list = user(@group)
  134.            public = yes|no
  135.            hide dot files = yes|no
  136.            create mode = 0755
  137.            directory mode = 0755
  138.            sync always = yes|no
  139.            short preserve case = yes|no
  140.            preserve case = yes|no
  141.            case sensitive = yes|no
  142.            mangle case = yes|no
  143.            default case = upper|lower
  144.            force user = grind
  145.            wide links = yes|no
  146.            max connections = 100
  147.            delete readonly = yes|no
  148.   各个部分说明如下:
  149. * MyShare指定共享名,一般就是网络邻居里面可以看见的文件夹的名字。
  150. * comment指的是对改共享的备注。
  151. * path指定共享的路径,其中可以配合samba变量使用。比如你可以指定path=/data/%m,这样如果一台机器的NETBIOS名字是grind,它访问MyShare这个共享的时候就是进入/data/grind目录,而对于NETBIOS名是glass的机器,则进入/data/glass目录。
  152. * allow hosts和deny hosts和前面的全局设置的方法一样这里不再提及。
  153. * writeable指定了这个目录缺省是否可写,也可以用readonly = no来设置可写。
  154. * user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开。
  155. * valid users指定能够使用该共享资源的用户和组。
  156. * invalid users指定不能够使用该共享资源的用户和组。
  157. * read list 指定只能读取该共享资源的用户和组。
  158. * write list指定能读取和写该共享资源的用户和组。
  159. * admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。
  160. * public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。
  161. * hide dot files指明是不是像unix那样隐藏以“.”号开头的文件。
  162. * create mode指明新建立的文件的属性,一般是0755。
  163. * directory mode指明新建立的目录的属性,一般是0755。
  164. * sync always指明对该共享资源进行写操作后是否进行同步操作。
  165. * short preserve case指明不管文件名大小写。
  166. * preserve case指明保持大小写。
  167. * case sensitive指明是否对大小写敏感,一般选no,不然可能引起错误。
  168. * mangle case指明混合大小写。
  169. * default case指明缺省的文件名是全部大写还是小写。
  170. * force user强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= grind强制建立文件的属主是grind,同时限制create mask = 0755,这样guest就不能删除了。
  171. * wide links指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。
  172. * max connections = n设定同时连接数是n。
  173. * delete readonly指明能否删除共享资源里面已经被定义为只读的文件。
  174.   有两类特殊的共享,分别是光驱和打印机
  175.   光驱的共享设置:
  176.     [cdrom]
  177.     comment = grind’s cdrom
  178.     path = /mnt/cdrom
  179.     public = yes
  180.     browseable = yes
  181.     root preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdrom
  182.     root postexec = /bin/umount /mnt/cdrom
  183.   这里root preexec指明了连接时用root的身份运行mount命令,而root postexec则指明了断开时用root身份运行umount,有效实现了对光驱的共享。
  184.   打印机共享的设置:
  185.     [printers]
  186.     path = /var/spool/samba
  187.     writeable = no
  188.     guest ok = yes
  189.     printable = yes
  190.     printer driver = HP LaserJet 5L
  191.   这里printable指明该打印机可以打印, guest ok说明游客也能打印,path指明打印的文件队列暂时放到/var/spool/samba目录下。printer driver的作用是指明该打印机的类型,这样我们在安装网络打印机的时候可以直接自动安装驱动而不必选择。
  192.   ★添加用户:
  193.   samba添加用户比较方便,一般是用smbadduser,用法是smbadduser unixid:netid,举个例子:如果你的本机有个叫grind的用户,你用smbadduser grind:grind,这样从网上邻居访问的时候用户名就用grind,而如果你用了smbadduser grind:glass的话,网上邻居访问的时候提供的用户名就是glass而不是grind了。
  194.   关于samba服务端的设置基本就是这些,我想一般应用中所要使用的上面几乎都覆盖到了,所以有些不重要的就省略了,如果要更加详细的信息可以用man smb.conf参考。<
  195. Samba使用大全(二)-Samba客户端
  196. 1. 使用Samba网络打印:
  197.   使用unix网络打印以前的文章比较少涉及,最近试验了一下,效果还是不错的,现在讲讲基本的实现方法:
  198.   比如你要建立一台网络打印机grind,而打印机对应网络上面的//glass/HPLaserj,所有需要配置的文件有下面几个:
  199.   1./etc/printcap,内容一般为:
  200.     grind:
  201.     :sh: #禁止提示的header
  202.     :ml=0: #打印的文件的长度下限,
  203.     :mx=0: #最大的打印文件大小,0为不限制
  204.     :sd=/var/spool/lpd/grind: #打印机的spool目录
  205.     :lp=|/usr/bin/smbprint: #打印输出需要的设备名或者管道名
  206.     :lpd_bounce=true: #强制lpd守护进程过滤打印文件
  207.     :if=/usr/share/printconf/mf_wrapper: #过滤命令文件
  208.   2.smbprint这个一般在安装完smb相关的rpm包以后就有了,主要内容是:
  209.     eval acct_file=$$#
  210.     spool_dir=`dirname $acct_file`
  211.     config_file=$spool_dir/.config
  212.     eval `cat $config_file`
  213.     share=`echo $share | sed "s/[]///g"`
  214.     if [ "$user" != "" ]; then
  215.     usercmd="-U"
  216.     else
  217.     usercmd=""
  218.     fi
  219.     if [ "$workgroup" != "" ]; then
  220.     workgroupcmd="-W"
  221.     else
  222.     workgroupcmd=""
  223.     fi
  224.     if [ "$translate" = "yes" ]; then
  225.     command="translate ; print -"
  226.     else
  227.     command="print -"
  228.     fi
  229.     cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I}
  230.     $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup"
  231.     -c "$command" 2>/dev/null
  232.     3.mf_wrapper是一个magic filter文件,是相关的一些过滤规则。内容是:
  233.       MF_RULE_DIR='/usr/share/printconf/mf_rules'
  234.       MF_RULES=$MF_RULE_DIR/mf[[:digit:]][[:digit:]]-*
  235.       TMP_FILE=`mktemp /tmp/printconf.XXXXXX`' 'exit 1
  236.       cat ./mf.cfg $MF_RULES | m4 > $TMP_FILE
  237.       if [ -n "$DEBUG" ]; then
  238.       case "$DEBUG" in
  239.                    2)
  240.                    DEBUGSTRING="--debug --debug"
  241.                    ;;
  242.                    3)
  243.                    DEBUGSTRING="--debug --debug --debug";;
  244.                    4)
  245.                    DEBUGSTRING="--debug --debug --debug --debug";;
  246.                    5)
  247.                    DEBUGSTRING="--debug --debug --debug --debug --debug";;
  248.                    *)
  249.                    DEBUGSTRING="--debug";;
  250.        esac
  251.       else
  252.       DEBUGSTRING=""
  253.       fi
  254.       # Run magic filter
  255.       /usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdin
  256.       RETVAL=$?
  257.       if [ -f $TMP_FILE ]; then
  258.       rm -f $TMP_FILE;
  259.       fi
  260.       ;;
  261.       esac
  262.       else
  263.       DEBUGSTRING=""
  264.       fi
  265.       # Run magic filter
  266.       /usr/bin/magicfilter-t $TMP_FILE $DEBUGSTRING $* < /dev/stdin
  267.       RETVAL=$?
  268.       if [ -f $TMP_FILE ]; then
  269.       rm -f $TMP_FILE;
  270.       fi
  271.       if [[ $RETVAL -eq 0 ]]; then
  272.       TERMINATION=`grep '^[[:space:]]*#[[:space:]]*TERMINATION=' ./mf.cfg | se
  273.       d 's/^[[:space:]]*#[[:space:]]*TERMINATION=//;'`
  274.       if [ -n $TERMINATION ]; then
  275.       echo -n -e $TERMINATION;
  276.       fi
  277.       fi
  278.   同时需要在/var/spool/lpd/grind下面有这么两个文件:mf.cfg和script.cfg。
  279.   mf.cfg的内容是:
  280.          define(TEXTfilter, text "" 14 )dnl
  281.          define(PSfilter, `filter /usr/share/printconf/util/mf_postscript_wrapper
  282.          --mfomatic -d lj5gray-75168.foo')dnl
  283.   script.cfg的内容是:
  284.       share="//glass/HPLaserj" #glass机器上面共享的打印机
  285.       hostip="192.168.1.123" #glass这台机器的IP
  286.       user=""
  287.       password=""
  288.       workgroup=""
  289.       translate="no"
  290.   完成这个工作后,启动lpd进程,然后就能用lpr等命令使用网络打印机打印了。
  291. 2. 使用网络共享文件资源:
  292. * 列出网络资源:
  293.   可以用smbclient来列出某台机器的资源,smbclient用法参考
  294.   [url]http://www.linuxaid.com.cn/training...owtod.jsp?i=241[/url]
  295.   这里讲比较有用的方法:
  296. 1) smbclient -L IP或者NETBIOS名称
  297. 作用是显示某台提供samba服务的服务器上的共享资源。命令执行效果如下:
  298.   smbclient -L glass
  299.   Sharename Type Comment
  300.   --------- ---- -------
  301.   IPC$ IPC 远程 IPC
  302.   HPLaserJ Printer HP LaserJet 6P
  303.   ADMIN$ Disk 远程管理
  304.   littlep Disk
  305.   C$ Disk 默认共享
  306.   Server Comment
  307.   --------- -------
  308.   GLASS
  309.   GRIND
  310.   Workgroup Master
  311.   --------- -------
  312.   BLUESUN GLASS
  313.   WORKGROUP HEIHEI
  314.   第一段列举了该机器(glass)上面的共享资源,第二段列举了glass所在的工作组里面所有提供samba服务的机器,第三列举了其他工作组提供browse服务的Master机器(关于Master和Browse服务可以参考我的前面一篇samba使用大全-samba服务器)。
  315. * 使用网络资源:
  316.   smbclient //IP或者NETBIOS名称/共享资源名 [-U 用户名]
  317.   命令执行效果如下:
  318.   smbclient //glass/littlep
  319.   added interface ip=192.168.1.123 bcast=192.168.1.255 nmask=255.255.255.0
  320.   Got a positive name query response from 192.168.1.123 (192.168.1.123)
  321.   Password:
  322.   Domain=[BLUESUN] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
  323.   smb: >
  324.   接下来的操作和ftp的时候命令一样,用get下载文件而用put上传文件,命令可以用help查看。
  325.   还有一种方法是用文件系统的方式(这种方式要确定你的内核支持smbfs,如果没有支持的话,编译内核的时候必须选中File systems--->Network File Systems---> SMB file system support (to mount Windows shares etc.)):
  326.   smbmount //IP或者NETBIOS名称/共享资源名 /本地挂接点 [-o option]
  327.   常用的的option有username=<用户名>,password=<密码>,guest(指定为用guest访问,不用提供密码,前面的即使用username=guest参数的话也会要求输入密码),ro(有时候为了系统安全要指定为只读模式),rw,同时多个option的话用逗号隔开。
  328.   或者可以用mount -t smbfs [-o option] //IP或者NETBIOS名称/共享资源名 /本地挂接点来实现同样的功能。
  329.   例子如下:
  330.   smbmount //glass/littlep /test -o guest或者mount -t smbfs -o guest //glass/littlep /test,然后就能通过访问/test来使用网络上的资源了。
  331.   如果不需要使用的时候,可以简单地使用smbumount /test或者umount /test来解除这个挂接。
  332.   关于samba的功能(共享Linux磁盘给Win95/NT、共享Linux打印机给win95/NT、共享win95/NT打印机给Linux机器。、共享Win95/NT磁盘给Linux机器),前面两个属于samba服务器的内容而后两个属于samba客户段的内容,在我的两篇文章中都有介绍了他们的实现方法,但是samba实在是一个强大的工具,无法十分详细地介绍它地全部功能,而且限于笔者的知识有限,有不到之处请各位指出,还望各位多多交流。
  333.   
  334. ===================================================================================================
  335. Samba服务配置文件中涉及到的配置命令列表
  336.   在下面所列出的,等号后没有内容的是系统没有设置或为空的(本人理解)
  337.   coding system = #
  338.   client code page = 936 #设置SAMBA所使用的字符集(默认是:850,936是简体中文)
  339.   code page directory = /usr/share/samba/codepages #
  340.   workgroup = CCGD.COM #设置SAMBA工作组;
  341.   netbios name = CCGD.COM #netbios名子;
  342.   netbios aliases = #设置samba服务的别名,(netbios的别名,在网络里同netbios一样做用);
  343.   netbios scope = #
  344.   server string = Samba Server #SAMBA服务器说明;
  345.   interfaces = 192.168.0.35/24 172.169.0.1/24 #SABMA服务器的网络接口设置,即网卡的IP地址;
  346.   bind interfaces only = No #
  347.   security = USER #设置共享级别;
  348.   encrypt passwords = Yes #使用加密密码进行SAMBA访问;
  349.   update encrypted = No #
  350.   allow trusted domains = Yes #
  351.   hosts equiv = #
  352.   min passwd length = 5 #设置密码的最小长度;
  353.   map to guest = Never #
  354.   null passwords = No #是否使用空密码;
  355.   obey pam restrictions = Yes #
  356.   password server = #进行密码验证的服务器(即当security = server/domain时用到此选项,用来设置服务器名子)
  357.   smb passwd file = /etc/samba/smbpasswd #加密密码验证文件存放位置;
  358.   root directory = #设置root访问时的主目录,系统默认是不允许root进行访问的;
  359.   pam password change = Yes #
  360.   passwd program = /usr/bin/passwd %u #
  361.   passwd chat = *New*password* %n *Retype*new*password* %n
  362.                                   *passwd:*all*authentication*tokens*updated*successfully* #
  363.   passwd chat debug = No #
  364.   username map = /etc/samba/smbusers #SAMBA用户
  365.   password level = 0 #
  366.   username level = 0 #
  367.   unix password sync = Yes #
  368.   restrict anonymous = No #
  369.   lanman auth = Yes #
  370.   use rhosts = No #
  371.   admin log = No #是否启用管理记录文件;
  372.   log level = 0 #
  373.   syslog = 1 #
  374.   syslog only = No #是否只做系统日志的记录;
  375.   log file = /var/log/samba/%m.log #日志文件的存放路径;
  376.   max log size = 100 #日志文件的大小(KB)
  377.   timestamp logs = Yes #
  378.   debug hires timestamp = No #
  379.   debug pid = No #
  380.   debug uid = No #
  381.   protocol = NT1 #
  382.   large readwrite = No #
  383.   max protocol = NT1 #
  384.   min protocol = CORE #
  385.   read bmpx = No #
  386.   read raw = Yes #
  387.   write raw = Yes #
  388.   nt smb support = Yes #
  389.   nt pipe support = Yes #
  390.   nt status support = Yes #
  391.   announce version = 4.5 #
  392.   announce as = NT #
  393.   max mux = 50 #
  394.   max xmit = 65535 #
  395.   name resolve order = lmhosts host wins bcast #
  396.   max packet = 65535 #
  397.   max ttl = 259200 #
  398.   max wins ttl = 518400 #
  399.   min wins ttl = 21600 #
  400.   time server = No #设置成时间服务器
  401.   unix extensions = No #
  402.   change notify timeout = 60 #
  403.   deadtime = 0 #
  404.   getwd cache = Yes #
  405.   keepalive = 300 #
  406.   lpq cache time = 10 #
  407.   max smbd processes = 0 #
  408.   max disk size = 0 #
  409.   max open files = 10000 #
  410.   read size = 16384 #
  411.   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 #
  412.   stat cache size = 50 #
  413.   use mmap = Yes #
  414.   total print jobs = 0 #
  415.   load printers = Yes #
  416.   printcap name = /etc/printcap #
  417.   disable spoolss = No #
  418.   enumports command = #
  419.   addprinter command = #
  420.   deleteprinter command = #
  421.   show add printer wizard = Yes #
  422.   os2 driver map = #
  423.   strip dot = No #
  424.   mangling method = hash #
  425.   character set = #
  426.   mangled stack = 50 #
  427.   stat cache = Yes #
  428.   domain admin group = #
  429.   domain guest group = #
  430.   machine password timeout = 604800 #
  431.   add user script = #
  432.   delete user script = #
  433.   logon script = logon.bat #设置用户登录脚本文件名(构建虚拟NT域时所需);
  434.   logon path = %L%U.profile.pds #设置登录用户配置文件(构建虚拟NT域时所需);
  435.   logon drive = #
  436.   logon home = %N%U #设置用户配置文件的主目录;
  437.   domain logons = Yes #启用域登录;
  438.   os level = 64 #设置操作系统级别;
  439.   lm announce = Auto #
  440.   lm interval = 60 #
  441.   preferred master = True #A
  442.   local master = Yes #B
  443.   domain master = True #C A、B、C把Samba设置成域主浏览器;
  444.   browse list = Yes #
  445.   enhanced browsing = Yes #
  446.   dns proxy = No #
  447.   wins proxy = No #
  448.   wins server = #用来指定WINS服务器(IP地址);
  449.   wins support = Yes #将Samba设置成WINS服务器;
  450.   wins hook = #
  451.   kernel oplocks = Yes #
  452.   lock spin count = 3 #
  453.   lock spin time = 10 #
  454.   oplock break wait time = 0 #
  455.   add share command = #
  456.   change share command = #
  457.   delete share command = #
  458.   config file = #
  459.   preload = #
  460.   lock dir = /var/cache/samba #
  461.   pid directory = /var/run/samba #
  462.   utmp directory = #
  463.   wtmp directory = #
  464.   utmp = No #
  465.   default service = #
  466.   message command = #
  467.   dfree command = #
  468.   valid chars = #
  469.   remote announce = #
  470.   remote browse sync = #
  471.   socket address = 0.0.0.0 #
  472.   homedir map = auto.home #
  473.   time offset = 0 #
  474.   NIS homedir = No #
  475.   source environment = #
  476.   panic action = #
  477.   hide local users = No #
  478.   winbind uid = #
  479.   winbind gid = #
  480.   template homedir = /home/%D/%U #
  481.   template shell = /bin/false #
  482.   winbind separator = #
  483.   winbind cache time = 15 #
  484.   winbind enum users = Yes #
  485.   winbind enum groups = Yes #
  486.   winbind use default domain = No #
  487.   comment = #
  488.   path = #
  489.   alternate permissions = No #
  490.   username = #
  491.   guest account = nobody #设置游客账号的用户名;
  492.   invalid users = #无效用户(即不能访问该Samba服务器的用户);
  493.   valid users = #有效用户(即可以访问该Samba服务器的用户);
  494.   admin users = #设置管理员账号;
  495.   read list = #设置具有只读权限的用户列表;
  496.   write list = #设置具有写权限的用户列表;
  497.   printer admin = #设置打印机管理员;
  498.   force user = #强行设置文件及文件夹的属主用户;
  499.   force group = #强行设置文件及文件的属主级;
  500.   read only = Yes #设置共享文件或文件夹仅有只读;
  501.   create mask = 0744 #设置创建文件时的默认权限;
  502.   force create mode = 00 #
  503.   security mask = 0777 #
  504.   force security mode = 00 #
  505.   directory mask = 0755 #设置创建文件夹时的默认权限;
  506.   force directory mode = 00 #
  507.   directory security mask = 0777 #
  508.   force directory security mode = 00 #
  509.   force unknown acl user = 00 #
  510.   inherit permissions = No #
  511.   inherit acls = No #
  512.   guest only = No #设置共享只允许GUEST账号访问;
  513.   guest ok = No #设置是否允许GUEST账号访问;
  514.   only user = No #
  515.   hosts allow = 192.168.0. 172.169.0. 127. #设置允许访问SAMBA有网络;
  516.   hosts deny = #设置不允许访问SAMBA有网络;
  517.   status = Yes #SAMBA的运行状态;
  518.   nt acl support = Yes #
  519.   block size = 1024 #
  520.   max connections = 0 #
  521.   min print space = 0 #
  522.   strict allocate = No #
  523.   strict sync = No #
  524.   sync always = No #
  525.   write cache size = 0 #
  526.   max print jobs = 1000 #
  527.   printable = No #
  528.   postscript = No #
  529.   printing = bsd #
  530.   print command = lpr -r -P%p %s #
  531.   lpq command = lpq -P%p #
  532.   lprm command = lprm -P%p %j #
  533.   lppause command = #
  534.   lpresume command = #
  535.   queuepause command = #
  536.   queueresume command = #
  537.   printer name = #
  538.   use client driver = No #
  539.   default devmode = No #
  540.   printer driver = #
  541.   printer driver file = /etc/samba/printers.def #
  542.   printer driver location = #
  543.   default case = lower #
  544.   case sensitive = No #对字符的大小定是否敏感;
  545.   preserve case = Yes #
  546.   short preserve case = Yes #
  547.   mangle case = No #
  548.   mangling char = #
  549.   hide dot files = Yes #
  550.   hide unreadable = No #
  551.   delete veto files = No #
  552.   veto files = #
  553.   hide files = #在客户端进行访问的时候是不显示隐藏文件;
  554.   veto oplock files = #
  555.   map system = No #
  556.   map hidden = No #
  557.   map archive = Yes #
  558.   mangled names = Yes #
  559.   mangled map = #
  560.   browseable = Yes #
  561.   blocking locks = Yes #
  562.   csc policy = manual #
  563.   fake oplocks = No #
  564.   locking = Yes #
  565.   oplocks = Yes #
  566.   level2 oplocks = Yes #
  567.   oplock contention limit = 2 #
  568.   posix locking = Yes #
  569.   strict locking = No #
  570.   share modes = Yes #
  571.   copy = #
  572.   include = #引用其它配置文件;
  573.   exec = #
  574.   preexec close = No #
  575.   postexec = #
  576.   root preexec = #设置用户访问共享以root身份执行的命令;
  577.   root preexec close = No #关闭的ROOT用户执行shell命令;
  578.   root postexec = #设置当用户退出共享时root身份执行的命令;
  579.   available = Yes #设置共享是否可用;
  580.   volume = #设置卷标;
  581.   fstype = NTFS #
  582.   set directory = No #
  583.   wide links = Yes #是不允许进行符号连接;
  584.   follow symlinks = Yes #
  585.   dont descend = #
  586.   magic script = #
  587.   magic output = #
  588.   delete readonly = No #是否可以删除只读文件;
  589.   dos filemode = No #
  590.   dos filetimes = No #
  591.   dos filetime resolution = No #
  592.   fake directory create times = No #
  593.   vfs object = #
  594.   vfs options = #
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表