Denna manualsida beskriver hur man konfigurerar sudo(8) till att fungera med sssd(8) och hur SSSD cachar sudo-regler.
För att aktivera SSSD som en källa för sudo-regler, lägg till sss till posten sudoers i nsswitch.conf(5).
Till exempel, för att konfigurera sudo till att först slå upp regler i standardfilen sudoers(5) (som bör innehålla regler som gäller för lokala användare) och sedan i SSSD, skall filen nsswitch.conf innehålla följande rad:
sudoers: files sss
Mer information om att konfigurera sökordningen för sudoers från filen nsswitch.conf liksom information om LDAP-schemat som används för att spara sudo-regler i katalogen finns i sudoers.ldap(5).
Observera: för att använda nätgrupper eller IPA-värdgrupper i sudo-regler behöver man även sätta nisdomainname(1) korrekt till sitt NIS-domännamn (som är samma som IPA-domännamnet när värdgrupper används).
All konfiguration som behövs på SSSD-sidan är att utöka listan över tjänster med "sudo" i avsnittet [sssd] i sssd.conf(5). För att snabba upp LDAP-uppslagningarna kan man även sätta sökbasen för sudo-regler med alternativet ldap_sudo_search_base.
Följande exempel visar hur man konfigurerar SSSD att hämta sudo-regler från en LDAP-server.
[sssd] config_file_version = 2 services = nss, pam, sudo domains = EXEMPEL [domain/EXEMPEL] id_provider = ldap sudo_provider = ldap ldap_uri = ldap://example.com ldap_sudo_search_base = ou=sudoers,dc=example,dc=com
Det är viktigt att observera att på plattformar där systemd stödjs finns det inget behov av att lägga till "sudo"-leverantören till listan av tjänster, eftersom det blev frivilligt. Dock måste sssd-sudo.socket vara aktiverat istället.
När SSSD är konfigurerat till att använda IPA som ID-leverantör aktiveras sudo-leverantören automatiskt. Sudo-sökbasen konfigureras till att använda IPA:s egna LDAP-träd (cn=sudo,$SUFFIX). Om någon annan sökbas är definierad i sssd.conf kommer detta värde användas istället. Kompatibilitetsträdet (ou=sudoers,$SUFFIX) behövs inte längre för IPA-sudo-funktionalitet.
Den största utmaningen vid utvecklingen av stöd för sudo i SSSD var att säkerställa att köra sudo med SSSD som datakälla ger samma användarupplevelse och är lika snabbt som sudo men tillhandahåller de senaste reglerna så mycket som möjligt. För att uppfylla dessa krav använder SSSD tre sorters uppdateringar. De refereras till som fullständig uppdatering, smart uppdatering och regeluppdatering.
Den smarta uppdateringen hämtar periodiskt regler som är nya eller ändrades efter den senaste uppdateringen. Dess primära mål är att se till att databasen växer genom att bara hämta små inkrementella steg som inte genererar stora mängder med nätverkstrafik.
Den fullständiga uppdateringen raderar helt enkelt alla sudo-regler som är lagrade i cachen och ersätter dem med alla regler som är sparade på servern. Detta används för att hålla cachen konsistent genom att ta bort varje regel som var raderad från servern. Dock kan en fullständig uppdatering skapa mycket trafik och den bör alltså bara köras ibland beroende på storleken och stabiliteten hos sudo-reglerna.
Regeluppdateringen säkerställer att vi inte ger användaren fler rättigheter än definierat. Den triggas varje gång användaren kör sudo. Regeluppdateringen kommer hitta alla regler som är tillämpliga på den användaren, kontrollera deras utgångstidpunkt och hämta om dem om de gått ut. Ifall att någon av dessa regler saknas på servern kommer SSSD göra en fullständig uppdatering vid sidan av för att fler regler (som är tillämpliga på andra användare) kan ha raderats.
Om aktiverat kommer SSSD endast lagra regler som kan tillämpas på denna maskin. Detta betyder att regler som innehåller ett av följande värden i attributet sudoHost:
Det finns många konfigurationsalternativ som kan användas för att justera beteendet. Se "ldap_sudo_*" i sssd-ldap(5) och "sudo_*" i sssd.conf(5).
sssd(8), sssd.conf(5), sssd-ldap(5), sssd-krb5(5), sssd-simple(5), sssd-ipa(5), sssd-ad(5), sssd-files(5), sssd-sudo(5), sssd-session-recording(5), sss_cache(8), sss_debuglevel(8), sss_obfuscate(8), sss_seed(8), sssd_krb5_locator_plugin(8), sss_ssh_authorizedkeys(8), sss_ssh_knownhostsproxy(8), sssd-ifp(5), pam_sss(8). sss_rpcidmapd(5) sssd-systemtap(5)
SSSD uppströms - https://github.com/SSSD/sssd/