在上篇博文中,我们利用Samba实现了最简单的匿名共享,但在大多数情况下,我们都希望能够对访问共享文件的用户进行身份验证,并分配相应的权限。

下面我们就在之前配置好的共享目录/home/share的基础之上,进行进一步的设置,使之需要进行身份验证才能访问。

 

要进行身份验证,首先需要确定验证时所使用的用户和密码。为了区别于Linux系统用户,通常将用于访问Samba共享的用户称为Samba用户。Samba用户必须依赖于系统用户,即要创建一个Samba用户,首先必须保证要有相应的系统用户存在,但是Samba用户的密码可以与系统用户的密码不相同。

下面我们先创建一个名为smbuser的系统用户,然后再将其设置为Samba用户。

[root@localhost ~]# useradd smbuser
注意,由于创建这个系统用户的目的就是为了将其设置成Samba用户,所以强烈建议不要用passwd命令为其设置系统用户密码,以防止利用该用户登录系统。也就是说,这个用户只能用来访问共享,而无法登录系统。
接下来再将smbuser设置为Samba用户,这里就要用到smbpasswd命令。这个命令的作用就是对Samba用户进行管理,smbpasswd命令的主要选项:
 -h:显示smbpasswd命令的帮助信息
 -a:添加指定的Samba用户帐号
 -d:禁用指定的用户帐号
 -e:启用指定的用户帐号
 -x:删除指定的用户帐号
 不使用任何命令选项时可以用于修改Samba用户的密码

这其中最常用的是-a选项,用于添加Samba用户,在添加的同时,还要为用户设置Samba密码:

Samba用户创建好了之后,接下来还要修改配置文件/etc/samba/smb.conf。

这里只需要将【global】全局设置中的“security = share”改为“security = user”,即启用用户身份验证。
RHEL6.3配置文件共享(4) Samba服务之二_第1张图片

 

重启服务之后,在客户端再次访问就需要输入用户名和密码了。

RHEL6.3配置文件共享(4) Samba服务之二_第2张图片

用户成功登录之后,除了能看到设置好的共享目录share之外,还能看到自己的主目录,这就是配置文件中默认的[homes]项所起到的作用。

RHEL6.3配置文件共享(4) Samba服务之二_第3张图片


smbuser对自己的主目录具有写入权限,我们继续设置,让他对share目录也具有写入权限。

在Samba服务器上继续修改配置文件,在[share]小节中增加一项“writable = yes”,表示允许写入:

保存退出后,重启服务。然后到客户端测试,但很遗憾地发现,用户还是无法写入。

这时因为我们同时还必须要确保系统用户smbuser对共享目录/home/share/也要具有写入权限。我们先来看一下这个目录的默认权限:

默认情况下,只有root用户才对其具有写入权限。为了确保所有的Samba用户都能对其写入,我们将目录的权限开到最大:

这样在客户端再次测试,就能够成功写入了。


下面考虑这样一个问题:如果在Samba服务器中再添加一个名为smbadmin的Samba用户,然后在客户端用这个新添加的smbadmin用户访问共享,是否也能够写入呢?

答案是肯定的,因为我们在服务器中设置的是“writable = yes”,这样所有的Samba用户都将具有写入权限。

如果希望对用户的权限进行区别设置,使smbuser用户只有读取权限,而smbadmin用户具有写入权限,这就需要对配置文件中的[share]小节做进一步的修改。

“writable = yes”表示所有用户都有写入权限,“write list”则指定了一个具有写入权限的用户列表,如果需要设置多个用户具有写入权限,则用户之间用逗号间隔。