当前位置:Linux教程 - Linux文化 - Samba杂谈

Samba杂谈


Samba(桑巴舞),在局域网中装Linux服务器,我想都要用Samba,不为别的,只因为客户端绝大多数是Windows。而使用Windows的用户绝大多数喜欢“网上邻居”,而懒得用FTP登到你的Linux服务器,更别指望他们会Telnet上服务器,而使用Linux做文件服务器也有很大的优势,就是可以使用Quota来限制用户使用的磁盘空间,这在NT中是实现不了的(除非你找到第三方的工具,是否稳定还需实际考验)。

Samba其实由两个服务组成:SMB service和NMB service,对应于smbd和nmbd两个守护进程。SMB是Server Messsage Block的缩写,它是实现与Windows文件共享的;NMB是NetBIOS Message Block的缩写,是在IP上提供NetBIOS名字服务的。

使用Samba,主要是两个功能:一是向Windows用户提供文件服务功能;二是使用Windows的文件服务。当然,我们更多的应用还是使Linux成为文件服务器。当使用Samba服务而使Linux成为文件服务器后,第一个遇到的问题就是Windows用户怎么找到它。因此,你要搞清楚smb.conf中的一些配置:

workgroup = ^^^^^^

这就相当于Windows 95、98中和工作组或NT中的域。如果你要使用户一打开“网上邻居”就能看到Linux服务器,那么你必须将^^^^^^设置成和用户的工作组一样(当然,更多的是你要用户和你设置的一样,但是,如果有一个NT域,那^^^^^^就必须是域名)。不过,有时你即使这么做了,但用户仍然找不到Linux服务器。没关系,你叫他们用“查找计算机”查一下,查到后再用,这不是你的错,也不是Linux的错,而是“网上邻居”的毛病。

用户找到了Linux服务器,哪些用户能用?哪些用户不能使用?能用的又该用什么?这就是一个权限的问题。首先是对用户身份的验证。在Samba中对用户身份验证的方式三两种:share、user和server,在samba 2.0.0以上中还有domain第四种方式。定义如下:

security = server

表示:Samba向客户报告它目前运行在“用户模式”(user mode),即用户必须提供用户名和密码,但此时它自己并不对用户身份进行验证,而是由password server =^^^^中指定的服务器进行验证,通过^^^^是一个NT服务器。这很像NT中的域之间的信任或在windows95、98的共享中选择“用户级”,只要服务器验证通过,Samba就接受。

security = share 或 Security = user

若使用上面两个选项,那么身份验证直接由Linux服务来进行。如果你选择security = share,那么无论你是以什么用户名登录到windows,你都可以在“网上邻居”中打开Linux服务器,并且看到所有的共享资源,但是你要访问共享资源时必须输入正确的用户名和密码。而选择security = user,如果你在windows中登录的用户在linux中没有帐号的话,在你打开Linux服务器后就会首先要你输入正确的用户名和密码,以后对于所有的共享资源,都以该名字和密码去验证。

无论你选择哪一个,你都需要使用这一句:

smb password file = /etc/smbpasswd

而且,如果你使用了密码加密存储,你还需要增加一句:

encrypt passwords = yes

这就是用户验证的方式。如果要限制一个共享资源哪些人能访问,你可以在该共享资源段中增设:

valid = name1 name2 ....

如果你只想某些人具有可写权限,在共享段中设置:

writable = no
write list = name1 @name2 //name1为用户名,name2为组名

总之,Samba的使用技巧比较多,上面只是我个人的一点杂谈,不当之处请大家指正。

- AKuan([email protected])


——摘自:Linux一千零一Yea