Vo fráze „spusti to na pozadí“ sa skrývajú dve otázky. Prvá je, či tento používateľ vôbec smie spustiť privilegovaný proces; druhá, či relácia môže pokračovať bez toho, aby niekto písal do terminálu. Ampersand v shelli neodpovedá na ani jednu a skript, ktorý ukladá heslo sudo do premennej, odpovedá zle na prvú a druhú necháva nedotknutú. Oddeľte ich a možnosti sa dajú ľahko porovnať.

Porovnajte troch kandidátov podľa vlastníctva, nie podľa pohodlia.

Tri spôsoby, ako opustiť terminál, traja rôzni vlastníci

Pripojenie ampersandu k príkazu požiada shell, aby ho spustil ako úlohu na pozadí, a úloha stále patrí tomu shellu. sudo sa môže opýtať ešte pred spustením programu a OpenVPN sa môže potom opýtať na heslo ku kľúču alebo prihlásenie. Spustenie príkazu, ktorý očakáva vstup, na pozadí vytvorí proces čakajúci na terminál, ktorý nikto nesleduje. Terminál sa uvoľní; interakcia nie.

Je to najlacnejšia možnosť a tá, ktorá zlyháva najzmätenejšie, pretože výzva sa objaví na mieste, ktoré operátor už opustil.

sudo -b nie je správca prihlasovacích údajov

sudo -b spúšťa príkaz na pozadí z pohľadu samotného sudo, čo znie ako chýbajúca funkcia a nie je. Podľa manuálu sudo sa interaktívne príkazy v tomto režime zvyčajne správajú zle a riadenie úloh shellu nedokáže spravovať procesy, ktoré vytvára. Presúva proces bez toho, aby mu dal spôsob odpovedať na otázky. Nič v ňom neposkytuje heslo k súkromnému kľúču ani prihlásenie k bráne.

Ak pripojenie potrebuje interakciu, riešením je podporované neinteraktívne usporiadanie autentifikácie, nie iný spôsob spustenia tej istej výzvy.

--daemon mení program, nie prihlásenie

--daemon žiada samotný OpenVPN, aby sa po inicializácii odpojil. Manuál k verzii 2.6 poznamenáva, že presmerovanie syslogu prebieha pri parsovaní voľby, hoci k odpojeniu dochádza neskôr, takže správy môžu v termináli prestať dochádzať skôr, než sa očakávalo. Ticho po tomto bode nič o tuneli nedokazuje. Pridajte výslovný --log alebo --log-append aby výstup skončil niekde, kde si ho môžete prečítať.

Démonický režim tiež natrvalo odstraňuje konzolu. Chránený súkromný kľúč v tomto režime potrebuje askpass , a údaje zadané z konzoly v kombinácii s voľbami ukladania do vyrovnávacej pamäte môžu nechať neskoršiu opätovnú autentifikáciu bez miesta, kde sa opýtať. Skontrolujte model autentifikácie voči nainštalovanej verzii, než budete predpokladať, že spustenie na pozadí prežije prvé obnovenie kľúča.

Čo validácia sudo dáva a čo nie

sudo -v overuje alebo obnovuje uložené miestne prihlasovacie údaje a autentifikuje sa, ak to vyžaduje politika. Nespúšťa OpenVPN, neautentifikuje sa voči bráne a nezaručuje, že neskorší príkaz v skripte bude povolený. sudo -n znamená opak: neopýtaj sa, zlyhaj. To robí miestne zlyhanie autorizácie explicitným, čo je užitočné, a nič nehovorí o tom, čo bude OpenVPN neskôr žiadať.

Ani jedna z možností nie je dôvodom udeliť plošné príkazy bez hesla alebo odovzdať heslo správcu do skriptu.

Uprednostnite vlastníka, ktorého možno pozorovať

Pre tunel vlastnený strojom použite inštanciu služby, ktorú distribúcia podporuje. Taký vlastník poskytuje štart, stop, stav a protokoly a prežije koniec vašej relácie. Skladanie shellového behu na pozadí, démonizácie a slučky reštartu okolo seba vytvára troch vlastníkov pre jeden tunel a žiadnu jasnú odpoveď, ktorý z nich beží.

Čokoľvek si vyberiete, overte prostriedok, pre ktorý tunel existuje. Úspešná žiadosť o spustenie je udalosť procesu, nie dôkaz fungujúceho pripojenia.

Súvisiace články