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.
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 🙂