Gumb VPN deluje pri skrbniku in spodleti pri vseh drugih, zato nekdo doda vrstico v sudoers. Ta vrstica običajno živi dlje od težave, ki naj bi jo rešila, in pogosto podeli več, kot gumb potrebuje. Preden uredite politiko, preverite, ali podprti lastnik povezave delo že zmore. Trije spodnji pogoji odločijo, ali je sudo sploh vključen.

Pogoj 1: podprti lastnik to zmore brez sudo

Na večini namizij Linux upravitelj omrežja že upravlja povezave VPN, njegova avtorizacija pa gre skozi polkit in ne skozi sudo. Uporabnik, ki sme dvigniti povezavo, lahko to stori iz ukazne vrstice brez kakršnega koli pravila root. Preverite, kaj upravitelj dovoljuje, preden domnevate, da gumb potrebuje privilegij. Če je odgovor da, sprememba v sudoers rešuje težavo, ki ne obstaja.

nmcli connection show
nmcli connection up "Work VPN"

Če upravitelj zavrne, preberite zakaj: manjkajoče pravilo polkit, povezava v lasti drugega uporabnika ali profil, shranjen tam, kjer ga uporabnik ne more prebrati. Vsak od teh ima podprto popravilo, ožje od pravila sudo. Povišanje privilegijev je zadnja možnost, ne prva.

Pogoj 2: pravilo imenuje eno izvršljivo datoteko in njene argumente

Če je sudo res potreben, naj pravilo imenuje natančen ukaz in, kjer je mogoče, argumente, ki jih sme uporabiti. Pravilo, ki uporabniku dovoli zagnati ovojno skripto, je varno le toliko, kolikor so varna dovoljenja te skripte, ker lahko uporabnik uredi, kar bo root izvedel. Pravilo z nadomestnim znakom za ukazom je ista težava v krajši obliki.

sudo -l -U alice
ls -l /usr/local/sbin/vpn-up

Preverite vsako pot v verigi ukaza: binarno datoteko, skripto, ki jo kliče, konfiguracijsko datoteko, ki jo bere, in vsako mapo vmes. Če lahko uporabnik piše v katero od njih, je zoženo pravilo v praksi neomejen root. Tudi argumenti štejejo, ker je ukaz, ki sprejme konfiguracijsko pot, mogoče usmeriti na datoteko, ki jo uporabnik nadzoruje. Pravilo pišite za operacijo, ne za gumb.

Ustavite se, če ukaz za delovanje potrebuje datoteko, ki jo nadzoruje uporabnik. Takrat je zasnova napačna in nobena sintaksa sudoers je ne bo naredila varne.

Pogoj 3: razčlenjena je celotna politika, ne le vaša vrstica

Preverjajte z urejevalnikom, ki datoteko zaklene in preveri sintakso, ter preverjajte sestavljeno politiko, ne fragmenta. Datoteka, ki se razčleni sama, lahko še vedno pokvari vrstni red vključevanja ali podvoji pravilo tako, da se vedenje spremeni.priročnik visudo opisuje tako zaklepajoči urejevalnik kot način samo preverjanja, uporabljen tukaj.

sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher

Preverjanje ob napaki sporoči datoteko in vrstico, in prav to poročilo je koristni del. Popravite predvideno spremembo z urejevalnikom, namesto da na silo shranite znano napako, ker lahko pokvarjena politika naenkrat zaklene vse skrbnike. Datoteke v mapi za vključevanje potrebujejo tudi lastništvo in način, ki ju zahteva priročnik, sicer bodo prezrte ali zavrnjene. Sintaksa je le prva vrata: ko jih prestane, znova preberite pravilo in vprašajte, kaj v resnici dovoljuje.

Ustavite se, če je edini način, da sprememba deluje, izklop preverjanja sintakse. To ni politika, to je izpad, ki čaka na ponovni zagon.

Obnovitev: obdržite sejo, ki še deluje

Preden shranite, poskrbite, da je pooblaščena skrbniška seja že odprta in da obstaja druga pot v stroj. Napaka v sudoers vam lahko vzame zmožnost, da jo popravite, in gumb na namizju ni vreden tega tveganja. Če je sudo že pokvarjen, uporabite dokumentirano pot obnovitve sistema, namesto da si izmislite svojo.

sudo -n true
id

Alternative, kot je pkexec, so odvisne od lastne namestitve in politike, zato niso zajamčen drugi poziv za root. Lokalno avtorizacijo ločite tudi od zagotavljanja skrivnosti VPN: pravilo sudo ne more odkleniti odsotnega agenta skrivnosti in ne izpolni MFA prehoda. Po popravku preizkusite običajen račun, ki izvede samo predvideno operacijo, nato uporabite običajne kontrolnike upravitelja.

Odločitev se konča, ko lahko poveste, kateri pogoj je upravičil sudo, kaj pravilo imenuje, da se celotna politika razčleni in kako bi se obnovili, če ne. Privilegiran zaganjalnik, ki vas stane skrbniškega dostopa, je slaba kupčija in se mu je običajno mogoče izogniti.

Sorodni članki