Ubuntu加入Active Directory

本文所述方法仅在Ubuntu 18.04.1上测试过。

Domain Join

首先将主机名设为统一格式,不然之后AD的DNS注册会出问题。

/etc/hosts 文件也需要一起修改以防止鉴权出错:

然后安装依赖,并加入域:

注:

  • realm 默认的错误提示很反人类,所以建议把 --verbose 开关打开
  • 用户名那部分不需要 @domain.name
  • 如果机器上已经装有PackageKit, realm 应该会自动安装其它依赖

自动建立新登录用户的家目录

pam-auth-update 工具,勾选Create home directory on login选项。

或者你想要手动操作的话:

/etc/pam.d/common-session 末尾增加一行:

session optional pam_mkhomedir.so

让OpenSSH支持Kerberos鉴权

/etc/ssh/sshd_config 需要修改以下项:

然后 systemctl restart sshd 生效。

Kerberos设置:

解释一下吧。Debian/Ubuntu/OpenSUSE下面OpenSSH不能自动支持Kerberos鉴权是由很多个原因共同导致的。

首先,Debian/Ubuntu打包sssd的时候没有默认启用 auth_to_local 设置(sssd上是用 sssd_krb5_localauth_plugin.so 插件实现的),这就导致了发生Kerberos鉴权时,本地krb5因为找不到本地用户对应的Kerberos用户而尝试去读取 $HOME/.k5login 和 $HOME/.k5user这两个文件来确定哪些Kerberos用户允许登录到本机的该用户。而这两个文件一般都找不到,因此登录就失败了。(换句话说,如果你不做上面的操作,而是在这两个文件之一中正确写入你的Kerberos用户名,也是可以正确登录的,但是只对当前用户有效。)

其次,RHEL/CentOS的OpenSSH服务器实现支持两个字段叫 GSSAPIEnablek5users 和 KerberosUseKuserok 可以在SSH服务器端禁用对这两个文件的检查,而其它发行版的OpenSSH服务器实现均无这两项设置,因此OpenSSH默认打开了对这两个文件的检查,从而触发了前一段所述的问题。

最后,Ubuntu自带的sssd-krb5 1.16.1-1ubuntu1还不支持 includedir 配置,因此我们无法默认在 /etc/krb5.conf 配置文件中加入这个localauth插件。所以在OpenSUSE上可以直接在 /etc/krb5.conf 顶端加上:

然后重启sssd即可生效。而对于Debian/Ubuntu,这一行会导致鉴权直接失败,因此我们只能暂时把所需的文件内容直接写进 /etc/krb5.conf 了。

给域管理组sudo权限

首先我们在AD里面建个组,比如叫 LinuxAdministrators ;我们需要获取到这个组的Linux名称:

返回值的第一部分 [email protected] 就是我们要的Linux名称了。

然后我们修改一下sudo配置:

在里面加入一行:

离开域

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.