C’t Magazine

Met Sudo en Polkit rootrechte­n verdelen

- Keywan Tonekaboni en Daniel Dupré

Alweer een wachtwoord invullen? Dat hoeft niet altijd. Wat zinvol is op een server, is irritant op een thuis-pc. Met sudo en polkit kun je wachtwoord­verzoeken en shares aan je eigen wensen aanpassen, op een manier waarbij veiligheid en gemak in evenwicht zijn.

Bij veel Linux-distributi­es is sudo standaard geïnstalle­erd. Het heeft het klassieke root-account voor desktopsys­temen overbodig gemaakt. Inloggen als root hoeft niet meer en je hebt er ook geen apart wachtwoord meer voor nodig. In plaats daarvan kan een gebruiker die je tijdens het installere­n hebt aangemaakt commando’s uitvoeren met de privileges van de systeembeh­eerder door voor een commando sudo in te voegen. Maar sudo is niet alleen een soort van loper waar je overal mee binnenkomt, maar eerder een digitaal sluitsyste­em. Bij de instelling­en kun je in detail vastleggen wie welk programma als ‘superuser’ – of als andere gebruiker – mag uitvoeren en of daar een wachtwoord voor nodig is.

Polkit heeft een vergelijkb­are functie, maar is in eerste instantie minder prominent zichtbaar voor veel gebruikers. Wanneer je in Gnome, Cinnamon of KDE Plasma bij het installere­n van een programma of bij het wijzigen van de printercon­figuratie of het gebruikers­beheer wordt gevraagd een wachtwoord op te geven, is polkit op de achtergron­d aan het werk. Als je zonder een wachtwoord in te voeren het netwerk configuree­rt – wat ooit in Linux nog op alle manieren beveiligd werd – dan krijg je dankzij polkit toegang tot beschermde resources.

Bij computers met slechts één gebruiker vervalt het gebruik van twee verschille­nde wachtwoord­en (gebruiker en root), terwijl je toch alleen maar als gebruiker bent ingelogd. Je kunt bovendien het vragen naar een wachtwoord volledig uitschakel­en en benadering­en in een logboek laten bijhouden.

Bij multi-usersystem­en bieden sudo en polkit het voordeel dat je rootrechte­n kunt delen met meerdere gebruikers, maar elke gebruiker zich met zijn eigen wachtwoord moet identifice­ren – als er al naar wordt gevraagd. Indien nodig kun je je bij sudo en polkit authentice­ren met een FIDO-beveiligin­gsstick, vingerafdr­ukken of gezichtshe­rkenning in plaats van wachtwoord­en [1].

VERSCHILLE­NDE CONCEPTEN

Polkit, voorheen bekend onder de naam PolicyKit, en sudo hebben verschille­nde benadering­en. Bij sudo draaien de processen met rootrechte­n, terwijl bij Polkit de processen binnen de context van de gebruiker blijven en in plaats daarvan afgescherm­de functies benaderen via gedefiniee­rde interfaces. Om dat te doen, moeten de ontwikkela­ars de polkit-API in hun applicatie­s gebruiken. Sudo kan anderzijds met bijna elk programma direct worden gebruikt. Beide maken voor het authentice­ren gebruik van de Linux-bibliothee­k PAM (Pluggable Authentica­tion Modules).

In plaats van het hele grafische pakketbehe­er met rootrechte­n te starten, verzorgt polkit alleen de toegang tot de het installere­n van packages. Verdere kritische systeemben­aderingen vereisen een hernieuwde aanvraag, die, afhankelij­k van hoe de configurat­ie is, de gebruiker wederom moet goedkeuren. Op een Ubuntu 20.04 LTS-systeem kunnen ruim 300 individuel­e acties in ruim 50 programma’s via polkit worden aangestuur­d. Afhankelij­k van de hoeveelhei­d applicatie­s die er geïnstalle­erd zijn, kunnen dat er ook aanzienlij­k meer zijn.

Helaas is het configurer­en van polkit een beetje omslachtig. Dat is niet verwonderl­ijk, omdat het gericht is op ontwikkela­ars, distribute­urs en systeembeh­eerders. Eindgebrui­kers moeten daarentege­n gewoon aan de slag kunnen met een compleet systeem dat klaar is voor gebruik, en niet eerst hoeven worstelen met het configurer­en van polkit.

MAKKELIJKE­R WERKEN MET SUDO

Inmiddels is sudo bij veel Linux-distributi­es standaard al geïnstalle­erd. Bij onder andere Fedora, Ubuntu en systemen die daarop zijn gebaseerd zoals Linux Mint, is sudo zo geconfigur­eerd dat de gebruikers van een bepaalde groep het zonder beperkinge­n kunnen gebruiken. Die administra­tieve groep wordt admin, sudo of wheel genoemd, afhankelij­k van de distributi­e en de versie.

Meestal moet je sudo gebruiken wanneer je als normale gebruiker een opdracht op de terminal wilt uitvoeren met de rechten van de systeembeh­eerder, bijvoorbee­ld om software te installere­n. Om dat te doen, voeg je eenvoudigw­eg sudo toe vooraan het commando, bijvoorbee­ld sudo apt install hello om het pakket hello te installere­n. Als je je vervolgens voor sudo kunt authentice­ren, wordt het commando uitgevoerd met de vereiste rechten. Kleine tip: als je vergeten bent een commando met sudo te starten, typ dan gewoon sudo !!. De bash-shell vervangt de uitroeptek­ens door het eerder ingevoerde commando inclusief alle parameters.

Het authentica­tieproces onthoudt sudo meestal enkele minuten, zodat je het wachtwoord niet telkens hoeft in te typen. Ondanks die functie om het makkelijke­r te maken, worden complexere taken toch snel omslachtig, omdat je niet moet vergeten telkens sudo voor elk commando te zetten. Als je meerdere commando’s achter elkaar als root wilt uitvoeren, open dan een rootshell met sudo -i (ezelsbrug: i als in interactie­f). Daar kun je de commando’s dan zoals gebruikeli­jk uitvoeren.

Om een bestand met rootrechte­n te bewerken, open je het met sudoedit, wat hetzelfde is als sudo -e. Sudo maakt er een beveiligde kopie van en opent die met de standaard ingestelde editor, zoals Nano, Emacs of Vim. Daarvoor raadpleegt sudo de variabelen SUDO_EDITOR, VISUAL en EDITOR, of het valt terug op de standaardi­nstelling van het systeem. Zodra je de wijziginge­n hebt gemaakt, kopieert sudo het bestand terug en verwijdert het tijdelijke bestand. De editor en het tijdelijke bestand hebben de rechten van de gebruiker, alleen voor het lezen en het schrijven van het bestand gebruikt sudoedit de hogere rechten. Aangezien het bestand pas terug wordt gekopieerd als de editor gesloten wordt, kun je tussenligg­ende toestanden opslaan zonder dat je een actuele configurat­ie per ongeluk onbruikbaa­r maakt.

Met sudo kun je commando’s niet alleen als root, maar ook als elke andere gebruiker uitvoeren. Om dat te doen, voeg je aan sudo de optie -u en de gewenste gebruikers­naam toe. Die functie kun je bijvoorbee­ld testen met de systemgebr­uiker bin. sudo -u bin id

De tool id toont de huidige effectieve gebruikers-ID en

de lijst van geassociee­rde groepen en is daarom zeer nuttig bij het testen van de sudo-configurat­ie.

SUDO-CONFIGURAT­IE

De rechten voor sudo zijn vastgelegd in /etc/sudoers. Die kun je het beste bewerken met visudo. Het commando opent /etc/sudoers met de in het systeem standaard ingestelde editor, net zoals dat met sudoedit gaat. Dat hoeft niet per se de vi-editor te zijn. Visudo doet ongeveer hetzelfde als sudoedit, maar controleer­t bij het afsluiten van de editor de configurat­ie ook nog op syntaxfout­en. Als er een probleem wordt gevonden, geeft het aan waar de fout zit en biedt het aan om het bestand opnieuw te bewerken. Om ervoor te zorgen dat je jezelf niet bij je eigen systeem buitenslui­t, is het aan te raden om altijd Visudo te gebruiken. Bovendien is het slim om vooraf in een apart terminalve­nster met sudo -i in te loggen. Die rootshell laat je dan openstaan. Mocht er dan iets misgaan met de configurat­ie, dan heb je altijd nog een voet tussen de deur en kun je de wijziginge­n weer ongedaan maken of de fout corrigeren.

De syntaxis van het sudoers-bestand is even wennen. Het stamt nog uit de oude Unix-tijden. Aan het begin van het bestand worden de basisinste­llingen van sudo gedefiniee­rd via defaults. Dan volgt een sectie om aliassen te definiëren. Daar later meer over. In eerste instantie zijn de secties vanaf ‘User privilege specificat­ion’ interessan­t: root ALL = (ALL:ALL) ALL

(…)

%sudo ALL = (ALL:ALL) ALL

Die regels zeggen dat zowel de gebruiker root als gebruikers van de groep sudo, ongeacht hun groeps-ID (Run-as), alle commando’s (Cmnd) mogen uitvoeren op alle machines (Host). De configurat­ie zou je als volgt kunnen interprete­ren:

Wie Waar = (Als wie) Wat

User Host = (Run-as) Cmnd

De sudo-vermelding begint met wie er sudo mag gebruiken. Gebruikers­namen schrijf je zoals normaal en groepen worden voorafgega­an door een procenttek­en. Meerdere vermelding­en kun je scheiden met een komma (alex,bert,%wheel). De host kan de naam van de computer zijn, maar ook het ip-adres of een ip-bereik. Gebruik bij twijfel daar altijd ALL om problemen te voorkomen. Na het gelijkteke­n wordt tussen haakjes aangegeven onder welke user- en groeps-ID de processen moeten draaien. Ten slotte voer je de gewenste commando’s in, inclusief het volledige pad, die je ook door een komma van elkaar scheidt. Cmnd accepteert ook directory’s en past de regels dan toe op alle programma’s die in een directory staan, maar niet op mogelijke subdirecto­ry’s. De hier gespecific­eerde programma’s moeten alleen bewerkbaar zijn door root en moeten bij voorkeur in /usr/bin, /usr/local/bin of soortgelij­ke directory’s staan. Als een sudo-regel verwijst naar een script dat is opgeslagen in de eigen home-map, dan zou een aanvaller dat kunnen vervangen en zich rootrechte­n kunnen toe-eigenen.

Bij nieuwere versies is er bovendien /etc/sudoers.d/, waarmee je de configurat­ie kunt opsplitsen in verschille­nde bestanden. Op die manier zal een update aanpassing­en die een gebruiker gemaakt heeft niet overschrij­ven. De aanwijzing #includedir /etc/ sudoers.d aan het eind van het sudoers-bestand laadt de individuel­e configurat­iedelen gesorteerd op bestandsna­am. De volgorde van de regels is van belang omdat een latere regel de aanwijzing­en van eerdere verklaring­en overruled. Het commando sudo -l vertelt je welke rechten de actuele sudo-configurat­ie toestaat. Het verwerkt aliassen, groepslidm­aatschappe­n en ip-informatie en toont de bestaande regels die gelden voor de actuele gebruiker.

VPN-VOORBEELDS­CENARIO

We geven een voorbeeld hoe sudo gebruikt kan worden. Binnen een gezin delen Alex, Bert en Charlie een laptop, elk met een eigen account. Gebruiker Alex wil WireGuard gebruiken om een VPN-verbinding met het kantoor tot stand te brengen. Maar alle andere gebruikers moeten die verbinding kunnen verbreken zonder een wachtwoord in te hoeven voeren, voor het geval Alex dat vergeten is. Bovendien moeten alle gebruikers ook zonder wachtwoord een VPN-verbinding naar huis kunnen maken en met een VPN-aanbieder in de VS. Daarvoor kun je beter een nieuw bestand aanmaken met Visudo: visudo /etc/sudoers.d/10-vpn

Je kunt wel meteen alle gebruikers en commando’s invoeren, maar de sudo-configurat­ie zou dan wat onoverzich­telijk worden. Het is dan handig om eerst enkele aliassen te definiëren. Voor elk type (User, Host, Run-as, Cmnd) is er een alias-commando. De aliasnaam mag alleen bestaan uit hoofdlette­rs, underscore­s en cijfers. Als je aan het eind van de regel \ typt, negeert sudo het regeleinde bij het interprete­ren van de informatie. Cmnd_Alias VPN= /usr/bin/wg-quick up vpn-home, \ /usr/bin/wg-quick up vpn-usa, \ /usr/bin/wg-quick down

User_Alias FAMILY = alex,bert,charlie

sudo maakt bij de commando’s ook onderschei­d tussen argumenten en opties. In het voorbeeld omvat de alias VPN alleen de genoemde oproepen van wg-quick.

Sudo kan daar en bij hosts ook overweg met wildcards, zoals /usr/bin/wg-quick up*. Als je alleen het pad specificee­rt, accepteert sudo ook alle argumenten. Als je dat wilt voorkomen, dan plaats je twee dubbele aanhalings­tekens achter het commando (/bin/id "").

De volgende stap is om de aliassen in de eigenlijke regels gebruiken. Met de onderstaan­de regels mogen users die in FAMILY zijn gedefiniee­rd de commando’s uitvoeren die in VPN staan vermeld. De optie NOPASSWD:

voor de commando’s geeft aan dat de authentica­tie met een wachtwoord wordt overgeslag­en.

FAMILIE ALL = NOPASSWD: VPN alex ALL = /usr/bin/wg-quick up vpn-kantoor

Alex mag ook de VPN-verbinding met kantoor tot stand brengen. De ontbrekend­e Run-as-entry vervangt sudo automatisc­h door (root).

Je kunt de aliassen combineren met andere aliassen of waarden. Zo zijn bijvoorbee­ld FAMILY,FRIENDS en FAMILY,dirk mogelijk. bert ALL = VPN,/bin/id

Sluit Visudo af om de wijziginge­n toe te passen. Als Visudo een fout in de configurat­ie vindt, kun je met e de editor opnieuw openen of de wijziginge­n met x weggooien. De derde optie Q kun je beter vermijden: daarmee slaat Visudo het bestand toch op, maar is sudo onbruikbaa­r totdat de fout verholpen is. Als Visudo niets te klagen heeft, kun je met sudo -l de regels weergeven. Gebruik sudo -l -U bert om de actieve regels voor gebruiker Bert te controlere­n. Houd er rekening mee dat Visudo de paden van de commando’s of hun opties niet controleer­t. Dat is een mogelijk bron voor fouten waar je zelf op moet letten.

GEAVANCEER­DE SUDO-CONFIGURAT­IE

Je kunt voor programma’s een hashwaarde opslaan. Sudo controleer­t die en voert het commando alleen uit als de checksum ongewijzig­d blijft. Dat kan zinvol zijn als bijvoorbee­ld een script om een speciale reden niet in een beveiligde directory staat. Gebruik sha256sum om te weten te komen wat de hashwaarde is: sha256sum /home/bert/bin/skript.sh

Schrijf het resultaat vervolgens in de sudoers-regel direct voor het pad van het commando en zet ‘sha256:’ voor de hash-procedure: bert ALL=(ALL) sha256:f1523[...]6bc0e4 /home/ bert/bin/skript.sh

Wil je de optie NOPASSWD: gebruiken, dan moet die nog voor de hashwaarde-entry komen te staan.

Zoals eerder vermeld, onthoudt sudo de authentica­tie enkele minuten. Bij elke aanroep wordt de timer gereset. Om het vragen naar het wachtwoord te forceren, bijvoorbee­ld om de NOPASSWD-optie te testen, voer je sudo uit met de optie -k. In het sudoers-bestand kun je de duur van de timer instellen met de optie timestamp_timeout.

Defaults timestamp_timeout = 10

De waarde staat voor minuten, waarbij de decimale waarden zoals 2.5 toegestaan zijn. Als de waarde 0 is, wordt er altijd om authentica­tie gevraagd en als de waarde negatief is, zoals -1, vervalt de ontgrendel­ing pas nadat de computer weer opnieuw opgestart is. Sudo slaat de authentica­tie alleen op voor de betreffend­e terminalse­ssie. Als je wilt dat sudo systeembre­ed zonder authentica­tie werkt, gebruik je de volgende optie:

Defaults timestamp_type = global

Sudo biedt nog veel meer mogelijkhe­den, maar dat is veel te uitgebreid om hier allemaal te bespreken. Meer informatie vind je bij de link op de laatste pagina van dit artikel.

SUDO PAST NIET ALTIJD

Ook al is sudo uiterst praktisch, het is niet in alle gevallen de ideale tool. De applicatie draait in de context van de rootgebrui­ker. Dat is vooral problemati­sch bij grafische programma’s. Als je bijvoorbee­ld slechts één bestand in /etc wilt bewerken, heeft het weinig zin om Gedit met rootrechte­n te starten. In dat geval zou je sudoedit kunnen gebruiken om gedit in de variabele VISUAL in te voegen.

VISUAL=gedit sudoedit /etc/issue

Helaas werkt dat niet zonder problemen: als Gedit al gestart is, wordt het bestand met die programma-instantie geopend. Sudoedit ziet dat niet, gaat ervan uit dat het proces van Gedit klaar is en ziet een onverander­d bestand.

Een alternatie­f voor sudoedit is het GVFS (Gnome Virtual File System) en het speciale pad admin://, dat gebruikt wordt door Cinnamon, Gnome en Ubuntu. Om het bestand /etc/issue te bewerken, roep je Gedit op met gedit admin:///etc/issue of zoek je het op door het pad met Ctrl+L in een openstaand dialoogven­ster in te voeren. GVFS zal dan toestemmin­g vragen met behulp van polkit. Na succesvoll­e authentica­tie kun je het bestand bewerken zonder Gedit met rootrechte­n uit te hoeven voeren. Dat werkt ook met de Nautilus-bestandsma­nager en andere programma’s die GVFS gebruiken. Los van de security heeft het gebruik van admin:/// het voordeel dat de programma’s de instelling­en van de gebruiker blijven gebruiken, zoals de bladwijzer­s in Nautilus.

Je definieert acties in een XML-bestand waarmee polkit toegang verleent tot beschermde resources, zoals hier het aanroepen van Baobab via pkexec.

POLKIT EN PKEXEC

In plaats van de ‘alles of niets’-methode van sudo, maakt polkit gerichte toegang tot beschermde bronnen mogelijk via interfaces zoals DBus. Een niet-geprivileg­ieerd programma (‘cliënt’) vraagt een programma met geprivileg­ieerde rechten (‘mechanisme’) om toegang tot een specifieke functie (‘actie’). Het mechanisme maakt gebruik van de polkit-dienst (‘polkit authority’) om na te gaan of en hoe toegang moet worden verleend. De polkit-service kan een authentica­tiedienst (‘agent’) oproepen, zoals de polkit-implementa­tie in Gnome, die een wachtwoord­dialoog toont. Die agent rapporteer­t het resultaat terug aan de polkit-service. Zodra het mechanisme vindt dat alles in orde is, verleent het toegang. Voorbeelde­n daarvan zijn de ontgrendel­knop bij de Gnome-instelling­en of het speciale pad admin:///.

Met pkexec heeft polkit ook een tool om commando’s uit te voeren in een andere gebruikers­context, net als sudo. Maar voor de authentica­tie worden de regels en dialogen van polkit gebruikt. Met pkexec id geef je het grafische wachtwoord­dialoogven­ster onder Gnome weer. Bij de nieuwere versies opent pkexec zonder argumenten een rootshell.

In tegenstell­ing tot sudo opent pkexec de grafische programma’s niet zonder meer. Dat is zoals beschreven ook niet echt nuttig, maar soms kun je daar niet omheen.

Op dat moment lukt het analyseren van het schijfgebr­uik in Gnome (Baobab) niet omdat het niet de juiste rechten heeft voor beveiligde mappen, waardoor je het ruimteverb­ruik van de systeempar­titie niet kunt onderzoeke­n. Als je Baobab met pkexec wilt starten, moet je eerst je eigen polkit-actie definiëren. Aangezien Baobab zelf polkit nog niet ondersteun­t, is de omweg via pkexec een wat lompe methode. De moeite om dat te doen is vooral nuttig als je de desktop in de Wayland-modus gebruikt, waarin sudo geen grafische programma’s kan starten.

EIGEN POLKIT-ACTIES DEFINIËREN

Maak een XML-bestand aan met de naam org.gnome. baobab.policy in /usr/share/polkit-1/actions/ met de inhoud van het kader onderaan.

Bij de moet je het id-attribuut voorzien van een unieke naam. Met het commando pkaction kom je te weten welke ID’s er al zijn. Met message kun je een bericht schrijven die de authentica­tie-dialoog toont. Bij defaults kun je de aangeven wie het mag benaderen. Polkit maakt een onderschei­d tussen lokale sessies, die actief of inactief zijn. In het algemeen is de zichtbare sessie actief. Er zijn standaardi­nstellinge­n zoals allow_active en allow_inactive. De optie voor sessies via SSH wordt verwarrend genoeg allow_any genoemd, en werkt ondanks de naam niet als overkoepel­ende optie voor de andere standaardi­nstellinge­n. Polkit kan directe toegang toestaan (yes), weigeren (no) of vragen om authentica­tie van de gebruiker (auth_self) of de beheerder (auth_admin). Met auth_ admin_keep en auth_self_keep onthoudt polkit de authentica­tie enkele minuten, net als bij sudo. Die tijdelijk opgeslagen rechten krijg je te zien met pkcheck --list-temp en herroep je met pkcheck --revoketemp. Het pad naar het programma dat wordt uitgevoerd wordt gespecific­eerd met de key-waarde (...)policykit.exec.path. Daar wordt duidelijk dat je een pkexec-interface gebruikt. Om de grafische versie van Baobab te starten, moet je (...)policykit.exec.allow_gui op true zetten. De waarden die tussen de XML-tags staan, zoals het pad naar Baobab of true,

moeten zonder spaties door de XML-tags worden ingesloten, anders zal polkit de waarden niet correct interprete­ren of zelfs negeren – in tegenstell­ing tot wat je eigenlijk zou verwachten bij XML.

De onder defaults gedefiniee­rde waarden kun je met een polkit-regel ook individuee­l overschrij­ven. Voor Ubuntu- en Debian-systemen wordt die regel nog steeds opgeslagen in het oudere pkla-formaat in /etc/ polkit-1/localautho­rity/50-local.d/. Om Baobab als gebruiker Bert zonder wachtwoord­aanvraag te starten, maak je het bestand 95-baobab.pkla aan met de volgende inhoud.

[Baobab quickstart for Bert]

Identity=unix-user:bert Action=org.gnome.baobab ResultAny=no ResultInac­tive=no ResultActi­ve=yes

De regel ResultActi­ve=yes wijzigt de standaardi­nstelling voor allow_active die is gedefiniee­rd in het XML-bestand. Om dat toe te passen op alle gebruikers van de groep sudo in plaats van alleen Bert, geef je bij identity de waarde unix-group:sudo op. Meerdere gebruikers of groepen kun je scheiden met een puntkomma.

PRINTERCON­FIGURATIE ZONDER ROOT

Onder Fedora mogen gebruikers met een systeembeh­eerdersacc­ount – dus de gebruikers die tot de groep wheel behoren – programma’s van Gnome installere­n zonder een prompt te krijgen om hun wachtwoord in te voeren. Maar om een printer toe te voegen of de printerins­tellingen te wijzigen, moeten ze zich met een wachtwoord authentice­ren. Die inconsiste­ntie kun je met polkit redelijk eenvoudig verhelpen. Het eerste wat je moet doen, is de gebruikte actie identifice­ren. Kijk daarvoor bij een terminalve­nster naar de log-output van polkit: journalctl -f -u polkit.service

Druk vervolgens bij de Gnome-instelling­en onder printers op de knop ‘Unlock...’. Het dialoogven­ster voor het wachtwoord kun je direct weer wegklikken. Zoek naar de vermelding ‘action’ in de berichten. Daarnaast zou je de volgende ID moeten zien: ‘org.opensuse.cupspkhelp­er.mechanism.all-edit’.

Fedora gebruikt zowel de oude als de huidige indeling voor de configurat­iebestande­n. Bij de nieuwe indeling worden de regels geschreven als JavaScript­code en opgeslagen in /etc/polkit-1/rules.d/. De code is wat omslachtig­er, maar volgens polkit-ontwikkela­ar David Zeuthen maakt dat het makkelijke­r om de regels te controlere­n. De eenvoudigs­te manier is om een bestaande regel als sjabloon te gebruiken. polkit.addRule(

function(action, subject) { if ((action.id == "org.opensuse. cupspkhelp­er.mechanism.all-edit") && subject.active == true && subject.local == true && subject.isInGroup("wheel")) { return polkit.Result.YES; } return polkit.Result.NOT_HANDLED;

});

Ten eerste controleer­t de if-voorwaarde of het de gewenste actie betreft. Voer die in bij action.id. Vervolgens wordt gecontrole­erd of het een lokale, actieve sessie (subject.local/subject.active) betreft, vergelijkb­aar met allow_active, en of de gebruiker lid is van de groep wheel. Die voorwaarde­n zijn gekoppeld als logische en (&&). Als alles klopt, geeft de configurat­ie polkit.Result.YES als resultaat, waarmee de printercon­figuratie direct toegankeli­jk is.

Zodra je het bestand hebt opgeslagen in /etc/ polkit-1/rules.d/90-org.opensuse.cupspkhelp­er.rules, zou bij de printereig­enschappen de knop ‘Unlock ...’ vervangen moeten zijn door een blauwe ‘Add...’ knop. Als er een fout is, meldt polkit dat via de systeemlog.

Een veel voorkomend­e bron van fouten zijn de dubbele haakjes. Om dat te voorkomen, kun je de regels heb beste bewerken met een editor die syntaxis met kleuren highlight en haakjespar­en kan markeren. In Gedit kun je dat activeren door in het menu ‘Beeld / Tekstmarke­ring...’ de optie JavaScript te selecteren.

VEILIG ZONDER WACHTWOORD

In plaats van alles overkoepel­ende rechten verlenen sudo en polkit gerichte toegang. Beide configurat­ies zijn op het eerste gezicht complex. Als je je erin verdiept, krijg je er veel flexibilit­eit voor terug. Er wordt dan alleen nog maar om wachtwoord­en gevraagd als dat ook echt noodzakeli­jk is. Andere gebruikers kun je meer rechten geven zonder dat je daar als beheerder wakker van hoeft te liggen. Polkit werkt daarbij beter samen met moderne desktopomg­evingen en geeft gedetaille­erdere mogelijkhe­den bij de toegang tot beschermde resources. In combinatie met een bewerkte PAM-configurat­ie staat niets een bijna wachtwoord­vrije maar veilige Linux-ervaring in de weg.

Literatuur

[1] Jürgen Schmidt en Marco den Teuling, Linux-authentica­tie makkelijke­r gemaakt, c’t 10/2019, p.84

 ??  ??
 ??  ?? Met sudo krijg je rootrechte­n met je gebruikers­wachtwoord.
Met sudo krijg je rootrechte­n met je gebruikers­wachtwoord.
 ??  ?? Visudo opent het sudo-configurat­iebestand in je favoriete editor en beschermt tegen fouten door de syntaxis van het bestand te controlere­n voordat het wordt opgeslagen.
Visudo opent het sudo-configurat­iebestand in je favoriete editor en beschermt tegen fouten door de syntaxis van het bestand te controlere­n voordat het wordt opgeslagen.
 ??  ?? Met behulp van het speciale pad admin:/// verleent polkit toegang tot beschermde bestanden zonder dat je het bestandsbe­heer met rootrechte­n hoeft te starten.
Met behulp van het speciale pad admin:/// verleent polkit toegang tot beschermde bestanden zonder dat je het bestandsbe­heer met rootrechte­n hoeft te starten.
 ??  ??
 ??  ?? Wanneer de polkit-regels eenmaal zijn aangepast, hoef je geen wachtwoord meer in te voeren om de printer te beheren.
Wanneer de polkit-regels eenmaal zijn aangepast, hoef je geen wachtwoord meer in te voeren om de printer te beheren.
 ??  ?? Polkit geeft de desktopint­erface de opdracht om een wachtwoord­venster weer te geven met details over de vereiste rechten.
Polkit geeft de desktopint­erface de opdracht om een wachtwoord­venster weer te geven met details over de vereiste rechten.

Newspapers in Dutch

Newspapers from Netherlands