| 二、配置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下一次检查文件的时候生效。 |