VPN mygtukas veikia administratoriui, o visiems kitiems nepavyksta, todėl kas nors prideda eilutę į sudoers. Ta eilutė paprastai gyvena ilgiau nei problema, kurią ji turėjo išspręsti, ir dažnai suteikia daugiau, nei mygtukui reikia. Prieš redaguodami politiką patikrinkite, ar palaikomos jungties savininkas jau gali atlikti šį darbą. Trys toliau pateiktos sąlygos nusprendžia, ar sudo apskritai dalyvauja.

1 sąlyga: palaikomas savininkas tai gali padaryti be sudo

Daugumoje Linux darbalaukių tinklo tvarkyklė jau valdo VPN jungtis, o jos autorizacija eina per polkit, o ne per sudo. Vartotojas, kuriam leidžiama pakelti jungtį, gali tai padaryti iš komandinės eilutės be jokios root taisyklės. Prieš manydami, kad mygtukui reikia privilegijos, patikrinkite, ką leidžia tvarkyklė. Jei atsakymas yra taip, sudoers pakeitimas sprendžia problemą, kurios nėra.

nmcli connection show
nmcli connection up "Work VPN"

Jei tvarkyklė atsisako, perskaitykite kodėl: trūkstama polkit taisyklė, kitam vartotojui priklausanti jungtis arba profilis, saugomas ten, kur vartotojas negali jo perskaityti. Kiekvienas iš jų turi palaikomą sprendimą, siauresnį nei sudo taisyklė. Privilegijų didinimas yra paskutinė priemonė, o ne pirmoji.

2 sąlyga: taisyklė nurodo vieną vykdomąjį failą ir jo argumentus

Jei sudo tikrai reikalingas, taisyklė turėtų nurodyti tikslią komandą ir, kur įmanoma, argumentus, kuriuos ji gali naudoti. Taisyklė, leidžianti vartotojui paleisti apvalkalo scenarijų, yra saugi tik tiek, kiek saugios to scenarijaus teisės, nes vartotojas gali pakeisti tai, ką vykdys root. Taisyklė su pakaitos simboliu po komandos yra ta pati problema trumpesne forma.

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

Patikrinkite kiekvieną komandų grandinės kelią: dvejetainį failą, jo kviečiamą scenarijų, jo skaitomą konfigūracijos failą ir bet kurį tarp jų esantį katalogą. Jei bet kurį iš jų vartotojas gali rašyti, susiaurinta taisyklė praktiškai yra neribotas root. Argumentai taip pat svarbūs, nes komanda, priimanti konfigūracijos kelią, gali būti nukreipta į failą, kurį valdo vartotojas. Rašykite taisyklę operacijai, o ne mygtukui.

Sustokite, jei komandai veikti reikia vartotojo valdomo failo. Tada dizainas neteisingas, ir jokia sudoers sintaksė nepadarys jo saugaus.

3 sąlyga: analizuojama visa politika, o ne tik jūsų eilutė

Tikrinkite redaktoriumi, kuris užrakina failą ir tikrina sintaksę, ir tikrinkite surinktą politiką, o ne fragmentą. Failas, kuris analizuojamas atskirai, vis tiek gali sugadinti įtraukimo tvarką arba dubliuoti taisyklę taip, kad pasikeistų elgsena.visudo vadovas dokumentuoja ir užrakinantį redaktorių, ir čia naudojamą tik tikrinimo režimą.

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

Patikra nepavykus praneša failą ir eilutę, ir būtent ši ataskaita yra naudingoji dalis. Taisykite numatytą pakeitimą per redaktorių, o ne priverskite išsaugoti žinomą klaidą, nes sugadinta politika gali vienu metu užrakinti visus administratorius. Įtraukimo katalogo failams taip pat reikia vadovo reikalaujamo savininko ir režimo, kitaip jie bus ignoruojami arba atmetami. Sintaksė yra tik pirmieji vartai: jiems praėjus, dar kartą perskaitykite taisyklę ir paklauskite, ką ji iš tikrųjų leidžia.

Sustokite, jei vienintelis būdas, kad pakeitimas veiktų, yra išjungti sintaksės patikrą. Tai ne politika, tai sutrikimas, laukiantis perkrovimo.

Atkūrimas: palikite sesiją, kuri dar veikia

Prieš išsaugodami įsitikinkite, kad įgaliota administracinė sesija jau atidaryta ir kad egzistuoja antras kelias į mašiną. Sudoers klaida gali atimti galimybę ją ištaisyti, o darbalaukio mygtukas nevertas šios rizikos. Jei sudo jau sugadintas, naudokite dokumentuotą sistemos atkūrimo kelią, o ne improvizuokite savą.

sudo -n true
id

Alternatyvos, tokios kaip pkexec, priklauso nuo savo diegimo ir politikos, todėl nėra garantuotas antras root prašymas. Laikykite vietinę autorizaciją atskirai ir nuo VPN paslapties pateikimo: sudo taisyklė negali atrakinti nesančio paslapčių agento ir netenkina šliuzo MFA. Po pataisymo patikrinkite įprastą paskyrą, atliekančią tik numatytą operaciją, tada naudokite įprastas tvarkyklės valdiklius.

Sprendimas baigiasi, kai galite pasakyti, kuri sąlyga pateisino sudo, ką nurodo taisyklė, kad analizuojama visa politika ir kaip atkurtumėte, jei ne. Privilegijuotas paleidėjas, kainuojantis administracinę prieigą, yra blogas sandoris, ir paprastai jo galima išvengti.

Susiję straipsniai