Snažím se připojit Ubuntu 16.04 k doméně Windows (aktivní adresář) pomocí realmd + sssd. V podstatě jsem sledoval tento příspěvek, který fungoval docela dobře a mohl jsem se připojit ke svému serveru a mohl jsem se úspěšně ověřit jako uživatel AD. V integraci však chybí dva kusy:
- Zaregistrujte název hostitele serveru v DNS
- Pro autorizaci uživatele použijte sssd-sudo
Zaregistrujte název hostitele serveru v DNS
Jak již bylo zmíněno, úspěšně jsem se připojil k AD pomocírealm join --user=dpr MYDOMAIN.INT --install=/
:
[email protected] ~ # realm list
mydomain.int
type: kerberos
realm-name: MYDOMAIN.INT
domain-name: mydomain.int
configured: kerberos-member
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
login-formats: %[email protected]
login-policy: allow-realm-logins
Navzdory úspěšnému připojení však můj server není známý ostatním strojům v doméně pomocí názvu hostitele ip-172-28-5-174.mydomain.int
. Našel jsem tuto dokumentaci, která zmiňuje dyndns_update
nastavení v souboru sssd.conf.
Jak používám realm. Konfigurace sssd se generuje automaticky zadáním příkazu join. Vygenerovaný konfigurační soubor vypadá takto:
[sssd]
domains = mydomain.int
config_file_version = 2
services = nss, pam
[domain/mydomain.int]
ad_domain = mydomain.int
krb5_realm = MYDOMAIN.INT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d
access_provider = ad
To znamená, že musím nějak přidat dyndns_update = True
do tohoto vygenerovaného souboru. Ale jak?
Pro autorizaci uživatele použijte sssd-sudo
Navíc chci, aby sssd četl moji konfiguraci sudo z AD. Myslím, že toho lze dosáhnout pomocí sssd-sudo, ale toto musí být povoleno/nakonfigurováno také v souboru sssd.conf přidáním sudo
do služeb sssd a použijte sudo_provider = ldap
pro mou doménu. Opět nejsem schopen přijít na to, jak to udělat s realmem.
V podstatě chci, aby můj vygenerovaný konfigurační soubor vypadal takto:
[sssd]
domains = mydomain.int
config_file_version = 2
services = nss, pam, sudo
[domain/mydomain.int]
id_provider = ad
access_provider = ad
sudo_provider = ldap
ad_domain = mydomain.int
krb5_realm = MYDOMAIN.INT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d
Máte nějaké nápady, jak toho lze dosáhnout?
Přijatá odpověď:
Pokud chcete, aby Active Directory spravovalo sudoers
, musíte do AD načíst specializované schéma a poté vytvořit pravidla pomocí nástroje, jako je ADSI Edit. Tento návod pro mě fungoval na Ubuntu 14.04. Nejdůležitější jsou:
- Importujte
schema.ActiveDirectory
- Vytvořte pravidla podle manuálové stránky sudoers-ldap
- Aktualizujte
etc/nsswitch.conf
zahrnoutsss
mezi záznamy nasudoers =
linka - Aktualizujte
etc/sssd/sssd.conf
zahrnout:sudo
mezi položkami naservices =
linka- prázdné
[sudo]
sekce (nejsou vyžadovány žádné konfigurace, ale Redhat tvrdí, že to spouští správnou konfiguraci podpory sudo) - řádek jako
sudo_provider = ad
(sssd docs na pagure.org tvrdí, že poskytovatel sudo je ve výchozím nastavení povolen pro ldap, ad a ipa, takže může být volitelný)
Když opakuji tento proces pro 16.04 (tj. stejná pravidla AD jako 14.04), ve skutečnosti mám jiné problémy. Zdá se, že to není nic neobvyklého. Je možné, že ve verzi sudo obsažené v 16.04 je chyba.
- V zásadě by tento problém měl vyřešit ruční upgrade na nejnovější verzi.
- Běžné
sudo
balíček (nikolisudo-ldap
) je správný balíček, pokud chcete SSSD (a nesudo
). ) ke správě připojení ldap. Konkrétně instalacesudo-ldap
nevytvářely žádné protokoly vsssd_sudo.log
zatímco běžnésudo
balíček ano. - Zatímco
sssd_sudo
nyní zobrazujeReturning 2 rules for [<user>@<domain>]
,sudo -l
stále odpovídáSorry, user <user>@<domain> may not run sudo on <host>
takže možná bude potřeba vyřešit další problémy.
Moje situace však nemusí být typická, protože mám další problémy, které se nezdají být běžné. Měl jsem například problémy se spuštěním realm join
které byly vyřešeny pomocí zástupných řešení z této otázky o chybě serveru.
Pokud jste se sem dostali kvůli problémům realmd/sssd/sudo v 16.04, zde jsou některé další hlášené problémy, které mohou být užitečné (ne nutně přímo související s problémem OP):
- Problém se síťovou skupinou hostitele IPA (další informace o seznamu uživatelů free-ipa)
- Je známý problém s řešením závislostí realmd. Jak již bylo zmíněno v diskuzi, instalace packagekitu se mnohým (včetně nás) vyřeší. Ve verzi 16.04 se může vyskytnout samostatný problém.
Vyhodnocujeme aktualizaci 16.04, takže to můžeme odsunout do pozadí, ale doufejme, že naše práce pomůže ostatním.