VPN-painike toimii ylläpitäjällä ja epäonnistuu kaikilla muilla, joten joku lisää rivin sudoersiin. Se rivi elää yleensä pidempään kuin ongelma, jonka se oli tarkoitettu ratkaisemaan, ja se antaa usein enemmän kuin painike tarvitsee. Ennen kuin muokkaat käytäntöä, tarkista, voiko tuetun yhteyden omistaja jo hoitaa työn. Kolme alla olevaa ehtoa ratkaisevat, onko sudo ylipäätään mukana.

Ehto 1: tuettu omistaja voi tehdä sen ilman sudoa

Useimmilla Linux-työpöydillä verkkohallinta omistaa jo VPN-yhteydet, ja sen valtuutus kulkee polkitin kautta eikä sudon kautta. Käyttäjä, jolle on sallittu yhteyden nostaminen, voi tehdä sen komentoriviltä ilman mitään root-sääntöä. Tarkista, mitä hallinta sallii, ennen kuin oletat painikkeen tarvitsevan oikeuksia. Jos vastaus on kyllä, sudoersin muutos ratkaisee ongelman, jota ei ole.

nmcli connection show
nmcli connection up "Work VPN"

Jos hallinta kieltäytyy, lue miksi: puuttuva polkit-sääntö, toisen käyttäjän omistama yhteys tai profiili, joka on tallennettu sinne, mistä käyttäjä ei voi lukea sitä. Jokaisella niistä on tuettu korjaus, joka on kapeampi kuin sudo-sääntö. Oikeuksien korotus on viimeinen keino, ei ensimmäinen.

Ehto 2: sääntö nimeää yhden suoritettavan tiedoston ja sen argumentit

Jos sudo todella tarvitaan, säännön pitäisi nimetä tarkka komento ja mahdollisuuksien mukaan argumentit, joita se saa käyttää. Sääntö, joka sallii käyttäjän ajaa kääreskriptin, on vain niin turvallinen kuin kyseisen skriptin oikeudet, koska käyttäjä voi muokata sitä, mitä root suorittaa. Sääntö, jonka komennon jälkeen on jokerimerkki, on sama ongelma lyhyemmässä muodossa.

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

Tarkista jokainen polku komentoketjussa: binaari, sen kutsuma skripti, sen lukema asetustiedosto ja mikä tahansa hakemisto niiden välissä. Jos käyttäjä voi kirjoittaa johonkin niistä, rajattu sääntö on käytännössä rajoittamaton root. Myös argumenteilla on merkitystä, koska komento, joka hyväksyy asetusten polun, voidaan ohjata tiedostoon, jota käyttäjä hallitsee. Kirjoita sääntö toimintoa varten, älä painiketta varten.

Pysähdy, jos komento tarvitsee käyttäjän hallitseman tiedoston toimiakseen. Silloin suunnittelu on väärä, eikä mikään sudoers-syntaksi tee siitä turvallista.

Ehto 3: koko käytäntö jäsennetään, ei vain sinun rivisi

Validoi editorilla, joka lukitsee tiedoston ja tarkistaa syntaksin, ja validoi koottu käytäntö eikä fragmentti. Tiedosto, joka jäsentyy itsestään, voi silti rikkoa sisällytysjärjestyksen tai kopioida säännön tavalla, joka muuttaa toimintaa.visudo-käsikirja dokumentoi sekä lukitsevan editorin että tässä käytetyn pelkän tarkistuksen tilan.

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

Tarkistus ilmoittaa tiedoston ja rivin, kun se epäonnistuu, ja juuri se raportti on hyödyllinen osa. Korjaa aiottu muutos editorin kautta sen sijaan, että pakottaisit tallentamaan tunnetun virheen, koska rikkinäinen käytäntö voi lukita kaikki ylläpitäjät kerralla. Sisällytyshakemiston tiedostot tarvitsevat myös käsikirjan vaatiman omistajuuden ja tilan, tai ne jätetään huomiotta tai hylätään. Syntaksi on vain ensimmäinen portti: kun se on läpäisty, lue sääntö uudelleen ja kysy, mitä se oikeastaan sallii.

Pysähdy, jos ainoa tapa saada muutos toimimaan on poistaa syntaksin tarkistus käytöstä. Se ei ole käytäntö, se on käyttökatko, joka odottaa uudelleenkäynnistystä.

Palautuminen: pidä istunto, joka vielä toimii

Ennen kuin tallennat, varmista, että valtuutettu ylläpidollinen istunto on jo auki ja että koneeseen on toinen reitti. Sudoers-virhe voi viedä sinulta kyvyn korjata se, eikä työpöydän painike ole sen riskin arvoinen. Jos sudo on jo rikki, käytä järjestelmän dokumentoitua palautumisreittiä äläkä improvisoi omaa.

sudo -n true
id

Vaihtoehdot kuten pkexec riippuvat omasta asennuksestaan ja käytännöstään, joten ne eivät ole taattu toinen root-kehote. Pidä paikallinen valtuutus erillään myös VPN-salaisuuden toimittamisesta: sudo-sääntö ei voi avata puuttuvaa salaisuusagenttia eikä täytä yhdyskäytävän MFA:ta. Korjauksen jälkeen testaa normaalia tiliä, joka suorittaa vain aiotun toiminnon, ja käytä sitten hallinnan tavallisia säätimiä.

Päätös päättyy, kun voit sanoa, mikä ehto oikeutti sudon, mitä sääntö nimeää, että koko käytäntö jäsennetään ja miten palautuisit, jos ei. Etuoikeutettu käynnistin, joka maksaa sinulle ylläpidollisen pääsyn, on huono kauppa, ja se on yleensä vältettävissä.

Aiheeseen liittyvät artikkelit