Linux系列-Red Hat5平台下的Samba服务搭建

Samba 是著名的开源软件项目,在 Linux/UNIX 系统中实现了 SMB/CIFS 网络协议,因此使得跨平台的文件共享变得容易。在部署 Windows Linux/UNIX 混合平台的企业环境时,使用 Samba 可以很好地解决不同系统之间的文件互访问题。
在配置 Samba 服务之前我们必须对其做一个了解,现在主要向大家说明以下几个方面:
首先说 Samba 服务的组成。 Samba 服务至少需要安装 samba samba-client samba-common 这三个软件包,其中 samba samba-client 软件包分别用于提供服务器和客户机端程序文件, samba-common 软件包提供了服务器和客户端都要使用的公共文件。 Samba 服务器主要提供 smbd 服务程序和 nmbd 服务程序,前者是为客户机提供服务器中共享资源的访问,后者则用于提供基于 NetBIOS 主机名称的解析,为 Windows 网络中的主机进行名称解析。
其次,说一下 Samba 服务的主配置文件。 Samba 服务的配置文件位于“ /etc/samba ”目录下,主配置文件为 smb.conf 。在该文件中,注释行以“ # ”开始,配置样例以“;”开始。样例行是对配置内容的举例。用户可以参考样例行进行服务器的配置。无论是注释行还是样例行, Samba 服务器都将予以忽略。 Smb.conf 配置文件包括三个部分。[ global ]――这部分内容对整个 Samba 服务器有效。[ homes ]――设置对应 Samba 用户宿主目录的默认共享。[ printers ]――用于设置打印机。
对上面所说的概念了解之后,配置就变的相对简单了,下面我们通过建立可匿名访问的文件共享和建立带验证的文件共享来看一下具体的配置步骤。
一.             建立可匿名的文件共享
建立匿名共享时,在 smb.conf 文件中主要设置两个地方即可:将安全级别调整为 share, 添加共享目录配置段。其它配置根据具体需要更改。
1.       创建共享目录并发布
 
说明:创建共享目录 /var/public/dir ,并创建一个文件 file1 以便测试。
 
说明:修改默认工作组为与 windows 主机同一默认的工作组,以便 windows 主机能够访问资源,将安全级别修改为 share. 添加共享文件夹的描述信息、路径、权限待内容。
2.       启动服务
 
说明:启动服务之后,通过命令 netstat �Canptu | grep mbd 可以看到, smbd 服务程序监听 TCP 协议的 139 端口( SMB )、 445 端口( CIFS ), nmbd 服务程序监听 UDP 协议的 137-138 端口( NetBIOS )。
3.       验证
 
通过上图可以看到客户端主机已经可以看到 samba 服务器上的共享资源,直接访问,不需要用户验证就可以访问了,如下图所示, windows 主机直接使用 UNC 路径访问即可。
 
二.             建立带验证的文件共享
匿名共享虽然用起来非常方便,但由于任何人都可以访问到共享的文件数据,在某些时候可能导致信息泄漏。如果希望只有指定的合法用户才能访问共享的数据,就需要对共享目录添加授权设置。必要的时侯,还可以对访问共享的客户端 IP 地址进行限制。下面就来看看建立带用户及客户端验证的文件共享是如可的配置。
1.       建立 Samba 用户数据库
为了区别于系统用户,通常将用于访问共享的用户称为 Samba 用户。 Samba 服务器使用独立的帐号数据文件,但是在建立 Samba 用户帐号时需要确保有对应的系统用户帐号存在, Samba 用户的密码可以与系统用户的密码不同。
1>. Samba 服务添加一个帐户,并将 roote 用户添加为 Samba 用户。
 
说明:此处添加了一个名为 zpp 的用户帐号,同时将 root 用户也加入了 samba 用户。 Smbpasswd 命令除了可以添加 samba 用户帐号外,还可以结合不同的命令选项完成不同的帐号维护工作。例如: -h: 显示 smbpasswd 命令的帮助信息; -a: 添加指定的 samba 用户帐号; -d: 禁用指定的用户帐号; -x: 删除指定的用户帐号;不使用任何命令选项时可以用于修改 samba 用户的密码。
2>. 查看 Samba 服务器默认的用户名称映射内容。
    基于 windows 客户端主机的特点和用户安全性考虑, samba 服务器提供了用户名称映射( usernamemap )功能,即可以将多个不同的用户名对应为同一个 samba 用户,起到隐藏对应的系统用户帐号的效果,减少密码穷举攻击的风险。用户名称映射文件位于“ /etc/samba/smbusers ”,文件中默已经添加了两条兼容 windows 客户机的用户名称映射,如图:
 
说明:当客户端主机以 administrator 用户名访共享时, samba 服务器将其映射为 root 用户;同样地, guest 用户名映射为 nobody 。当然,若要正常使用,还需要添加并启用对应的 samba 用户(在“ /etc/samba/smbpasswd ”文件中有 root nobody )。
3>. Samba 用户 zpp 设置到名称 hello 的映射
 
说明:此处将 zpp 映射为 hello 是为了安全性考虑,由于 samba 用户 zpp 对应有同名的系统用户,而映射的名称 hello 只相当于一个别名(而非实际存在的用户),为了安全起见,可以不将 zpp 帐户名称告诉共享用户,而只告诉其名为 hello 的用户帐户和密码(也就是 zpp 帐户的密码)。注意不要望了在 samba 主配置文件的全局设置中添加 username map = /etc/samba/smbusers 以此指定名称映射文件。
2.       添加用户授权设置
smb.conf 主配置文件中,共享目录的用户授权设置主要由“ valid users ”、“ write list ”配置项指定,同时要取消公开访问的设置 ( 即设为“ public=no ).
 
说明:此处设置共享的目录为“ /var/public ”取消了公开的访问的设置。合法访问者为用户 zpp root 组内的用户,并设置只有 root 用户可有写入的权限。当需要授权多个用户时以空格或逗号分隔开,注意不能使用帐户别名。授权一个组时使用“ @groupname ”的形式,组内的每个用户都需要有对应的 Samba 用户。上图中的“ directory mask ”、“ create mask ”配置项用于给 samba 用户设置在共享目录中建立子目录、文件等权限。
另外,控制 samba 用户访问共享目录的读取、写入权限时,注意要满足一个前提条件,即与该 samba 用户同名的系统用户对服务器中的共享目录(如:“ /etc/public/dir ”)也必须有相应的读取、写入权限。
3.       添加客户端地址授权设置
smb.conf 文件中,使用“ host allow ”配置项可设设置仅允许访问共享的客户机地址,使用“ host deny ”配置项可以设置仅拒绝访问共享的客户机地址,两者选其一。配置参数可以使用主机名或 IP 地址、网络地址的形式,多个地址之间以空格或逗号分隔。
 
说明:此处在 host allow 配置项中设置仅允许 192.168.1.0/24 172.16.0.0/16 网段的客户机访问 samba 服务器。
4.       重新启动 Smb 服务。
 
建立好 Samba 用户数据库,并为共享目录添加好用户授权设置、客户端地址授权设置、重新启动 smb 服务之后,我们就可以来测试了。
从下图可以看到, IP 地址为 192.168.1.2/24 ,的客户机使用映射帐户 hello 可以成功的访问到 samba 服务器上的资源。
 
从下图可以看到,在客户机上使用 hello 帐户成功挂载共享目录 //192.168.1.1/dir 后,它只有读取的权限,并没有创建目录及文件的权限。
 
从下图可以看到,在客户机上使用 root 帐户成功挂载共享目录 //192.168.1.1/dir 后,他不但可以读取 samba 服务器上的共享资源,同时具有创建目录及文件的权限。
 
    最后,值得注意的是可匿名访问的文件共享只适用于安全性不高的情况下,如果对安全性有更高的要求,建议使用带用户验证的文件共享。

你可能感兴趣的:(linux,职场,服务器,samba,休闲)