Join Ubuntu Linux zu Active Directory mit SSSD/RealmD

Kurze Anleitung um eine Ubuntu Linux Maschine in ein AD zu joinen und per Gruppen Logon und Sudo Rechte vergeben zu können.

Installation der nötigen Pakete

apt install -f realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit

Linux Maschine AD join

Damit ein AD join klappt müssen die AD DNS Server eingestellt sein in der Linux Maschine. Als Test kann man mit realm einen discover machen.

root@machine:~# realm discover example.local
example.local
  type: kerberos
  realm-name: EXAMPLE.LOCAL
  domain-name: example.local
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin

Ist der Discover erfolgreich kann man einen join durchführen. Bei der Aktion wird für die Linux Maschine ein Computerkonto angelegt im AD.

# realm join -U administrator example.local
Passwort für administrator: 

Ob der join erfolgreich war kann man mit id testen, z.B.

# id example.local\\testuser
uid=656801103(testuser@example.local) gid=656800513(domänen-benutzer@example.local) groups=656800513(domänen-benutzer@example.local),656801104(p_linux_logon@example.local)

sssd.conf anpassen

Um das Anmelden an der Maschine z.B. auf die AD Gruppe p_linux_logon zu beschränken muss die sssd.conf angepasst werden.

# cat /etc/sssd/sssd.conf 

[sssd]
domains = example.local
config_file_version = 2
services = nss, pam

[domain/example.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = EXAMPLE.LOCAL
realmd_tags = manages-system joined-with-adcli 
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = example.local
use_fully_qualified_names = False
ldap_id_mapping = True

# replaced bei access_provider = simple
#access_provider = ad
# restrict access to ad group members
access_provider = simple
simple_allow_groups = p_linux_logon

Anschließend sssd.service neu starten.

systemctl restart sssd

Aktivieren von mkhomedir um das Homedir automatisch anzulegen

Default auf „yes“ setzen.

# nano /usr/share/pam-configs/mkhomedir 

Name: Create home directory on login
Default: yes
Priority: 0
Session-Type: Additional
Session-Interactive-Only: yes
Session:
        optional                        pam_mkhomedir.so

Anschließend „pam-auth-update“ ausführen und „Create home directory on login“ aktivieren.

pam-auth-update

SUDO AD Gruppe zu /etc/sudoers hinzufügen

echo "%p_linux_sudo ALL=(ALL:ALL) ALL" >> /etc/sudoers

Tests

Ich habe 3 Testuser:

  • testuser – Standard User mit Linux Anmelderechten (p_linux_logon), kein SUDO
  • stestuser – Standard User mit Linux Anmelderechten (p_linux_logon) und SUDO (p_linux_sudo)
  • ntestuser – Standard User ohne Linux Anmelderechte
# id example.local\\stestuser
uid=656801106(stestuser) gid=656800513(domänen-benutzer) groups=656800513(domänen-benutzer),656801105(p_linux_sudo),656801104(p_linux_logon)
# id example.local\\testuser
uid=656801103(testuser) gid=656800513(domänen-benutzer) groups=656800513(domänen-benutzer),656801104(p_linux_logon)
# id example.local\\ntestuser
uid=656801108(ntestuser) gid=656800513(domänen-benutzer) groups=656800513(domänen-benutzer)

Man kann auch mit sssctl user-checks prüfen ob ein User sich anmelden kann oder nicht.

# sssctl user-checks testuser
user: testuser
action: acct
service: system-auth

SSSD nss user lookup result:
 - user name: testuser
 - user id: 656801103
 - group id: 656800513
 - gecos: Test User
 - home directory: /home/testuser@example.local
 - shell: /bin/bash

pam_acct_mgmt: Success

PAM Environment:
 - no env -


# sssctl user-checks ntestuser
user: ntestuser
action: acct
service: system-auth

SSSD nss user lookup result:
 - user name: ntestuser
 - user id: 656801108
 - group id: 656800513
 - gecos: Test User No Linux
 - home directory: /home/ntestuser@example.local
 - shell: /bin/bash

pam_acct_mgmt: Permission denied

PAM Environment:
 - no env -

Die Gruppenzugehörigkeit kann auch mit getent geprüft werden:

# getent group p_linux_sudo
p_linux_sudo:*:656801105:stestuser

Viel Spaß mit SSSD/RealmD und Active Directory 🙂

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.