Linux基础服务 ·

Samba之PDC服务账号管理

Samba PDC(Primary Domain Controller) 的作用很简单,就是让 Samba PDC 成为整个局域网络的领域管理员 (domain controller), 然后让 Windows 主机加入这个领域,未来使用者利用 Windows 登入时:

(1)Windows 会前往 PDC 服务器取得用户的账号密码。

(2)同时 PDC 还会传送用户的重要数据到那部 Windows 个人计算机上。

(3)而 Windows 计算机上的用户注销时,该用户修改过的数据也会回传给 PDC 。

如此一来不管这个使用者在哪一部个人计算机上面登入, 他都能够取得正确的个人资料!

PDC 是个很复杂的环境,他可以达到的功能相当的多,而且密码的验证也不必在同一部 PDC 主机上面, 不过这里我们不谈那么复杂的东西,只是做一个简单的练习,因此底下的这部 PDC 使用 Linux 自己的密码来进行验证, 并且也只管理自己所分享出去的资源!至于假设网络环境与相关工作组参数如下:

一个简易的 PDC 实作案例相关参数示意图
整个基本的设定流程应该是这样的:

  • 区网计算机环境设定:整体网域设定好,尤其 Windows 的工作组与计算机名称及 IP 等参数;
  • PDC 设定:因为 PDC 管理自己的密码,所以 security = user;
  • PDC 最好拥有整个网域的名称解析权力,即成为主要的名称解析器;
  • 需有 netlogon 资源共享,提供 windows 2000/XP pro. 客户端的登入之用;
  • 由于 Windows 需读入个人配置文件,默认目录为 profile,Linux 系统需预先设定此目录;
  • 增加 PDC 上的使用者账号以及机器代码 (machine account) 等等
  • 在 Windows 2000/XP pro. 个人计算机上设定成为 PDC 的客户端。

底下咱们就来依序处理处理先!

PDC 服务器的建立非常的麻烦,需要一步一步的实作进行。而且,由于建置 PDC 的环境主要在管理整个区网内的 Windows 计算机,因此每部 Windows 计算机的主机名与相关参数要先确定下来,如同上一小节的图示内, 每部计算机的角色定位都需要清楚才行。清楚了各个计算机的角色后,接下来就能够慢慢的实作进行。

建置 NetBIOS 与 IP 对应的数据

设定 lmhosts 与 /etc/hosts

由于我们的 Samba 即将成为整个网域的名称解析者,因此你最好将整个网域的 NetBIOS name 与 IP 的对应写入 lmhosts 文件当中。如果你的区网是以 DHCP 发放 IP 的,那么你最好搭配 DNS 系统去建置你的主机名对应信息, 否则主机名对应不起来,总是有点困扰。在这个案例中,由于我使用的 NetBIOS name (如 sambaserver) 与主机名 (如 www.getlinux.cn) 并不相同,因此这里建议需要修改 lmhosts 才好。

由于 Linux 上的 Samba 很多数据还是与 TCP/IP 的主机名有关,所以除了 lmhosts 之外,建议还是处理一下 /etc/hosts 比较妥当!这样就行啦!

建置 PDC 主设定

处理 smb.conf

假设我们要让 PDC 客户端登入时可以取得他自己的家目录,那么需要这样处理:

上面的设定有几个地方比较重要一点:

  • time server:要使 Samba 与 Windows 主机的时间同步,使用这个项目;
  • logon script:当使用者以 Windows 客户端登入后,Samba 可以提供一支批处理文件,让使用者去设定好他们自己的目录配置。整个配置的内容记录在 startup.bat 当中。 你要注意的是,这个 startup.bat 文件名可以随意更改,不过他必须要放置到 [netlogon] 所指定的目录内;
  • logon drive:那么这个家目录要挂载到那个分区? 在 Windows 底下大多以 C, D, E... 做为磁盘的代号,你这里可以指定一下家目录要放置成为那个磁盘代号;
  • admin users:指定这个 Samba PDC 的管理员身份。
  • [netlogon]:指定利用网络登录时首先去查询的目录资源。
  • logon path:用户登入后,会取得的环境设定数据在哪? 我们知道用户会有一堆环境数据,例如桌面等,这些东西都放置到这里来。使用的变量中, %N 代表 PDC 服务器的位置, %U 则代表用户的 Linux 家目录。因此最终你得要有 ~someone/profile 的目录才可以。
  • logon home:用户的家目录,默认与 Linux 的家目录相同位置。

建立 Windows 客户端登入时所需的设定数据 netlogon 目录

先来建立 [netlogon] 内所需要的数据,那就是一个目录。由于我预计将所有的 PDC 数据通通放置到 /winhome 当中,包括用户家目录,因此很多东西都需要修订!包括后来的 SELinux 肯定会出问题的~

接下来我们还得要建立允许使用者执行的文件,就是那个 startup.bat 才行! 注意一下,我们这里假设用户家目录为 K ,那你可以这样做:

建立 Windows 专用的使用者

因为预计将使用者全部挪到 /winhome 底下,而且每个用户家目录应该还要有 profile 目录存在才行, 为了避免麻烦,所以我们先到 /etc/skel 去处理一下,然后才建立账号,最后才产生 samba 用户! 产生 samba 用户可以使用 pdbedit 也能够直接使用 smbpasswd -a ,因为没有要用特殊的参数, 所以,Samba 用户就用旧的 smbpasswd 来处理即可。

那以后新增的使用者都有可以存放来自 Windows 的特殊配置文件目录!比较好管理。

当然,用 useradd 新增使用者后,记得也要使用 smbpasswd -a username 来让该使用者可以使用 Samba !

建立机器码账号

由于 PDC 会针对 Windows 客户端的主机名 (NetBIOS name) 进行主机账号检查, 所以我们也要为客户端的主机名进行账号的设定。主机账号一般用户账号是英文或数字,主机账号则在该账号最后面加上一个钱字号『$』即可! 举例来说, vbirdwinxp 这部主机可设定的账号名称为 vbirdwinxp$。

而我们知道要使用 smbpasswd 增加的使用者必须要在 /etc/passwd 当中,因此要建立这个账号你就得要这样做:

会增加 -M -s -d 等参数的原因是因为不想要让这个账号具有可以登入的权限, 因此将这个主机账号设定的比较怪一点,接下来让 Samba 知道这个账号是主机账号,所以你应该要这样做:

这样便加入主机账号了!而我们的 Samba PDC 也就可以透过『主机账号』来判断 Windows 客户端能否连上来, 若连接上 PDC 与 Windows 客户端后,接下来一般使用者账号就可以在 windows 客户端登入了!

修改安全性相关数据

由于我们建立的账号目录在 /winhome 底下,并非正规的 CentOS 目录,所以最重要的 SELinux 可能会跑掉~ 所以,我们还得要修订 SELinux 才行!方法很简单,将 SELinux type 转为 samba_share_t 即可!

由于 SELinux 的数据是会继承上层目录的,因此未来新增的用户,理论上,就不需要重新修订 SELinux 的文件类型了。 但是,如果你老是发现登入 PDC 的账号却无法取得家目录,那么就观察 /var/log/messages 内的资料来 修改吧!

参与评论