万卷书   首页 > 电脑书籍 > Linux >利用Samba共享Linux和Windows资源
 
 二、配置Samba

  安装好Samba之后还要配置它,“声明”某些可以被其他系统访问的资源。具体声明哪些资源在Samba的配置文件/etc/smb.conf中指定。在大规模的网络中,smb.conf文件可能相当复杂,但对于小型网络,只要为每个需要共享的目录或资源加入几行内容到smb.conf文件就可以了。

  配置Samba可以用文本编辑器手工编辑smb.conf,但最简单的方法是使用SWAT。SWAT是一个Web界面的配置工具。本文后面会介绍使用SWAT配置Samba的方法。

  smb.conf的man文档总长度超过75页,相当复杂。好在配置一个连接2到3台机器的Samba并不需要我们融会贯通全部75页文档,实际上只需要了解本文所介绍的基础知识即可完成这个任务。

  不过必须明白Samba涉及到许多严肃的安全问题,这一点非常重要。当我们通过Samba声明某个目录共享时,网络上的其它系统就可以直接访问该目录。在大型网络里,或者网络与Internet连接时,最终有权访问该目录的机器数量可能远远超过设置Samba时所设想的数量。

  如果你认为有必要关注系统的安全问题,我建议你读几本有关Samba的专著。本文提供的例子非常简单,有关安全方面的考虑很少,它适用于通常不能从Internet访问的小型家庭网络。

  smb.conf文件会在安装Samba的时候自动安装到/etc/smb.conf下,因此,你应该通过修改smb.conf文件配置Samba,而不是从头开始创建smb.conf。默认文件包含了相当丰富的说明,指导用户如何启用、禁止或改变各种选项。在这个文件中,说明内容的前面由;或者#符号引导,这两个符号告诉Samba在读取配置信息的时候忽略这些行。

  smb.conf文件按“节”组织,每个节开头是一个加括号的关键字。配置网络时必须编辑[global]节,为每一个需要声明为共享的目录和资源加入对应的条目。[global]节里定义的是一组全局选项,访问Samba共享资源的Windows组和机器的IP地址都在这里指定。

  例如,在我的配置文件中,[global]节的内容如下:



[global] workgroup = my_workgroup_name hosts allow = 172.16.127. security = user


  workgroup行指定了Windows工作组的名字,hosts allow行指定了允许访问本地共享资源的机器(所有这些机器的IP地址都以172.16.127开头)。security行用于指定基本的访问安全级别。再次提醒一下,如果共享资源位于大型网络之中或直接连接到Internet,一定要特别小心,务必仔细地阅读与安全有关的Samba文档。

  [global]节影响所有Linux下声明为共享的目录,但用户设置具体到每一个共享目录。,例如,下面是摘自我的smb.conf的一部分内容:

 



[hal] comment = "Hal's home directory" path = /home/hal browseable = yes writable = yes available = yes public = yes only user = no create mode = 0750


  节的名字([hal])公布给Windows客户机,如果需要的话,Windows客户机还可从comment行得到更多有关该共享目录的说明。path是共享目录的路径。[hal]节的其他几行内容指定了客户机可以浏览目录、在目录中写入内容,以及赋予该目录和在该目录下创建的文件的各种许可。这里仅列出了可能用到的一部分参数,更详细的说明可以在man文档找到。

  Linux系统的打印机也可以被Samba客户共享。下面是我的smb.conf文件中有关打印机共享的声明:



[ljet] comment = "Laserjet" path = /var/spool/lpd/lp printer = lp public = yes printable = yes print command = lpr -r -h -P %p %s

/var/spool/lpd/ lp)设置成可以被所有用户访问,这可以用chmod a+rwx /var/ spool/lpd/lp命令实现。如果在配置打印共享时出现问题的话,不妨试一下这个命令。

  编辑好smb.conf文件后可以用testparm命令检验它。testparm命令读取smb.conf文件并显示它找到的所有错误。显示错误的时候,按一下Enter键可以显示已设置的所有参数。下面显示的是testparm在我的系统上的输出(由于长度原因,[global]节已被截掉一部分)。



Load smb config files from /etc/smb.conf Loaded services file OK. Press enter to see a dump of your service definitions # Global parameters workgroup = YAMANOTE netbios name = netbios aliases = server String = Samba Server interfaces = bind interfaces only = No security = USER encrypt passwords = No ... [homes] comment = /Home path = /home read only = No create mask = 0750 guest ok = Yes [hal] comment = Hal Home path = /home/hal read only = No create mask = 0750 guest ok = Yes [ljet] path =/var/spool/lpd/lp read only = No guest ok =Yes print ok = Yes print command =lpr -r -h -P %p %s printer name=lp


  启动Samba Daemon

  Samba通信由一组后台运行的daemon程序处理,这些程序可以配置成在Linux系统启动的时候自动启动。daemon是对在后台持续运行的程序的称呼。如果Samba daemon没有在系统启动的时候自动启动,你可以用linuxconf之类的工具把它设置成自动启动。另外也可以用下面的命令手工启动Samba daemon,注意这些命令必须用root身份运行:



# /usr/sbin/smbd -D # /usr/sbin/nmbd -D

  Samba daemon启动后读入smb.conf文件并公布在该文件中设置成共享的目录和服务。缺省情况下,Samba会每隔60秒重新检查smb.conf文件,对smb.conf文件的改动会在Samba daemon下一次检查文件的时候生效。

上一页 下一页