离开域

如果我们想逆转该过程并将自己从域中删除,只需运行“realm leave”命令,后跟域名,如下所示。

[jack@onitroad ~]# realm leave example.com

这将在没有任何进一步用户输入的情况下完成。
它将删除在 Active Directory 中创建的计算机对象,删除密钥表文件,并将 sssd.conf 和 krb5.conf 文件设置回默认值。

准备 CentOS

首先,我们要在 CentOS 中安装以下所有软件包。

yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python -y

CentOS 服务器需要能够解析 Active Directory 域才能成功加入它。
在这种情况下,我在 /etc/resolv.conf 中的 DNS 服务器设置为托管我希望加入的 example.com 域的 Active Directory 服务器之一。

[jack@onitroad ~]# cat /etc/resolv.conf
search example.com
nameserver 192.168.1.2
如何将 CentOS Linux 加入 Active Directory 域

本教程中,我们将介绍如何通过命令行将 Linux 系统添加到 Microsoft Windows Active Directory (AD) 域。
这将允许我们使用 AD 域中的用户帐户通过 SSH 连接到 Linux 服务器,从而提供跨平台身份验证的中央来源。

配置 SSH 和 Sudo 访问

现在我们已成功将 CentOS 服务器加入 example.com 域,我们可以使用默认设置从 Active Directory 以任何域用户身份通过 SSH 登录。

[jack@onitroad ~]# ssh jack@onitroad
jack@onitroad's password:
Creating home directory for user1.

我们可以通过修改 /etc/ssh/sshd_config 文件来进一步限制 SSH 访问,并利用 AllowUsers 或者 AllowGroups 之类的东西来只允许 AD 中的某些用户或者组具有访问权限。
有关更多信息,请参阅我们的 sshd_config 文件教程。
如果我们对此文件进行了任何更改以应用它们,请不要忘记重新启动 sshd。

我们还可以修改我们的 sudoers 配置,以允许我们的域中的用户帐户具有所需的访问级别。
我通常创建一个名为“sudoers”之类的 Active Directory 组,将我的用户放入其中,然后通过在 /etc/sudoers.d/ 中创建一个文件来允许该组 sudo 访问,该文件允许 AD 集中控制 root 访问。

下面是一个例子,“sudoers”组将拥有完全的根访问权限。

[jack@onitroad ~]# cat /etc/sudoers.d/sudoers
%sudoers    ALL=(ALL)       ALL

这个组只存在于Active Directory中,我们的Linux服务器可以看到user1是Active Directory中sudoers组的成员,并且尊重这个组配置,并按照上面的配置允许user1 root权限。

测试帐户的用户名是“user1”。

有了这个,example.com Active Directory 域中的 user1 帐户现在将能够使用 sudo 命令以 root 权限运行命令。

[jack@onitroad ~]$ sudo su
[sudo] password for user1:
[jack@onitroad user1]#
[jack@onitroad user1]# whoami
root

这就是它的全部内容,我们现在可以使用 Active Directory 域中的用户帐户通过 SSH 连接到 Linux 服务器,甚至可以从 AD 特定级别授予特定用户或者组访问权限。

将 CentOS 加入 Windows 域

现在我们已经解决了我们可以实际加入域的问题,这可以使用“领域加入”命令来完成,如下所示。
我们需要指定域中有权将计算机加入域的用户的用户名。

[jack@onitroad ~]# realm join --user=administrator example.com
Password for administrator:

输入特定帐户的密码后,将自动配置 /etc/sssd/sssd.conf 和 /etc/krb.conf 文件。
这真的很棒,因为在加入域时手动编辑这些通常会导致各种小问题。
在此过程中还会创建 /etc/krb5.keytab 文件。

如果此操作失败,我们可以在命令末尾添加 -v 以获得非常详细的输出,这将为我们提供有关问题的更多详细信息,以便进一步进行故障排除。

我们可以通过运行“realm list”命令来确认我们在域中(域的 Linux 术语),如下所示。

[jack@onitroad ~]# realm list
example.com
  type: kerberos
  realm-name: EXAMPLE.COM
  domain-name: example.com
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
  login-formats: %jack@onitroad
  login-policy: allow-realm-logins

成功完成后,将在 Active Directory 中的默认计算机容器中创建一个计算机对象,如下所示。

为了保持整洁,我喜欢将它移到 Linux 服务器的其他组织单位 (OU) 中,而不是将内容留在默认的计算机容器中,但这对于本练习来说并不重要。

现在我们的 Linux 服务器是 Active Directory 域的成员,我们可以执行一些测试。
默认情况下,如果我们要指定域中的任何用户,则需要指定域名。
例如,使用下面的“id”命令,我们不会为“管理员”返回任何信息,但是“jack@onitroad”显示帐户的 UID 以及该帐户在 Active Directory 域中所属的所有组。

[jack@onitroad ~]# id administrator
id: administrator: no such user
[jack@onitroad ~]# id jack@onitroad
uid=1829600500(jack@onitroad) gid=1829600513(domain jack@onitroad) groups=1829600513(domain jack@onitroad),1829600512(domain jack@onitroad),1829600572(denied rodc password replication jack@onitroad),1829600519(enterprise jack@onitroad),1829600518(schema jack@onitroad),1829600520(group policy creator jack@onitroad)

我们可以通过修改 /etc/sssd/sssd.conf 文件来改变这种行为,以下几行需要改变:

use_fully_qualified_names = True
fallback_homedir = /home/%jack@onitroad%d

下面,不需要指定完全限定的域名 (FQDN)。
这也会修改 /home 中的用户目录,使其在用户名后指定 FQDN。

use_fully_qualified_names = False
fallback_homedir = /home/%u

要应用这些更改,请重新启动 sssd。

[jack@onitroad ~]# systemctl restart sssd

现在我们应该能够在不指定域的情况下找到用户帐户,如下所示,现在可以在以前没有的地方使用。

[jack@onitroad ~]# id administrator
uid=1829600500(administrator) gid=1829600513(domain users) groups=1829600513(domain users),1829600512(domain admins),1829600572(denied rodc password replication group),1829600520(group policy creator owners),1829600519(enterprise admins),1829600518(schema admins)

如果这仍然不适合我们,我建议我们查看刷新 sssd 缓存。

日期:2020-07-07 20:56:25 来源:oir作者:oir