PAM模块应用
Samba服务器3.X与PAM模块结合已非常完善,通过PAM模块的强大功能可以有效地丰富Samba服务器的各项功能。
6.4.1 系统密码同步
Samba服务器使用完全独立于系统之外的用户认证,这样的好处是可以提高安全性,但同样也带来了一些麻烦,比如修改用户密码是即要修改该用户登录系统的密码,又要修改登录Samba服务器的密码。但通过PAM模块所提供的功能可以有效实现系统用户密码与Samba服务器密码的自动同步。
使用passwd修改用户系统密码时,自动同步Samba服务器用户密码。编辑/etc/pam.d/system-auth文件,将该文件中所有password部分注释(如图6-34所示),再加入如下内容。
passwordrequisite pam_cracklib.so retry=3 passwordrequisite pam_unix.so shadow md5 use_authtok try_first_pass passwordrequired pam_smbpass.so use_authtok use_first_pass
在上述配置完成后,当用户使用passwd修改系统用户密码时,Samba服务器会自动完成同步,但是如果系统中新增的用户在第一次使用passwd设置用户系统密码前必须先使用smbpasswd
-a将用户增加到Samba服务器中,否则将无法设置用户系统密码。
用户与客户端访问控制
在/etc/samba/smb.conf文件中可以通过hosts allow、hosts deny对访问的客户端进行控制,也可以使用valid
users对访问用户进行控制,但如果希望对特定用户在特定客户端进行控制就必须使用PAM模块了。
下面例子允许tonyzhang在位于192.168.0.0/24的客户端访问,拒绝tomyang在位于192.168.1.0/24的客户端访问。
(1)在/etc/samba/smb.conf文件[global]标签中加入如下内容。
obey pam restrictions=Yes
(2)编辑配置文件/etc/pad.d/samba,在第一个accout前添加如下语句。
account required pam_access.so accessfile=/etc/samba/myacl
(3)在/etc/samba下建立名为myacl的文件,在该文件中增加如下内容。
+:tonyzhang:192.168.0. -:tomyang:192.168.1.
默认磁盘配额配置
在Samba服务器上对用户使用共享目录空间的限制主要通过系统提供的磁盘配额来实现,但Linux中提供的磁盘配额功能必须针对用户或组来设置,这样如果用户量比较大时,设置起来就不太方便,在Samba服务器可通过指定一个用户或组的配额作为所有用户的默认配额的方法来解决这个问题。在下面的例子中每个用户可以写入test共享目录的数据量都以tonyzhang用户对该分区的配额为准(如希望以某个组的配额作为默认配额,将下面例子中的uid改为gid即可)。
(1)为tonyzhang用户设置磁盘配额。
(2)在/etc/samba/smb.conf文件中定义test共享目录处加入如下内容。
[smbtest] comment = This is smb test path = /test writable = yes vfs object = default_quota default_quota:uid = 501 #用户tonyzhang的UID为501。 default_quota:uid nolimit = No 为Samba服务器配置回收站,需要使用虚拟文件系统(VFS)模块,Samba可以使用多种VFS模块,这些模块存放在/usr/lib/samba/vfs目录中。本章主要讲述通过recycle.so模块实现。 为Samba服务器配置回收站时,需要针对每个共享资源进行配置。在下面的例子中将为Samba服务器的共享资源test配置一个回收站。 [smbtest] comment = This is smb test path = /test writable = yes vfs object = recycle recycle:repository = .deleted/%U recycle:keeptree = Yes recycle:versions = Yes recycle:maxsixe = 0 recycle:exclude = *.tmp|*.mp3 recycle:noversions = *.doc 在上面配置中,各参数含义如下。 (1)vfs object = recycle:载入recycle.so模块,recycle名称不能为其他。 (2)recycle:repository = . recycle/%U:回收站的相对路径,这个选项指定删除的文件将被储存在什么目录,它和共享资源的实际路径有关。在上面的例子中,"test"使用/home/test路径,因此任何被删除的内容都被移动到这个目录下的. recycle目录中。%U变量是当前浏览共享用户的用户名,因此,每个用户删除的文件都会存放在以他用户名命名的目录下。此参数只能使用相对路径。所配置的目录其他用户必须有写权限。当有文件需在放入此目录时,如出现问题Samba服务器会将相关情况写入日志,所需文件删除。 (3)recycle:keeptree = Yes:在将文件移入回收站时,要建立相对应的目录结构。 (4)recycle:versions = Yes:如果在回收站所在目录中存在同名文件,则以Copy #x of 文件名的形式加以区分。 (5)recycle:maxsixe = 0:回收站的最大使用空间,以字节为单位。0表示没有最大使用空间的限制。 (6)recycle:exclude = *.tmp|*.mp3:不放入回收站的文件类型。 (7)recycle:noversions = *.doc:如果在回收站所在目录中存在同名文件,覆盖原有文件的文件类型。
参考: http://book.51cto.com/art/201108/282449.htm