A la frase «executa-ho en segon pla» s’amaguen dues preguntes. La primera és si aquest usuari pot iniciar un procés privilegiat; la segona és si la sessió pot continuar sense que ningú escrigui en un terminal. L’ampersand de l’intèrpret no respon cap de les dues, i un script que desa una contrasenya de sudo en una variable respon malament la primera i deixa intacta la segona. Separeu-les i les opcions es tornen fàcils de comparar.

Compareu els tres candidats per qui en té la propietat, no per comoditat.

Tres maneres de deixar el terminal, tres propietaris diferents

Afegir un ampersand a una ordre demana a l’intèrpret que l’executi com a feina en segon pla, i la feina continua pertanyent a aquest intèrpret. sudo pot demanar abans que el programa comenci, i OpenVPN pot demanar després una contrasenya de clau o un inici de sessió. Executar en segon pla una ordre que espera entrada produeix un procés que espera un terminal que ningú no mira. El terminal s’allibera; la interacció, no.

És l’opció més barata i la que falla de manera més confusa, perquè la indicació apareix en un lloc que l’operador ja ha deixat.

sudo -b no és un gestor de credencials

sudo -b executa l’ordre en segon pla des de la perspectiva del mateix sudo, cosa que sona com la funció que faltava i no ho és. Segons el manual de sudo, les ordres interactives solen comportar-se malament en aquest mode, i el control de feines de l’intèrpret no pot gestionar els processos que crea. Mou el procés sense donar-li cap manera de respondre preguntes. Res no hi proporciona una contrasenya de clau privada ni un inici de sessió a la passarel·la.

Si la connexió necessita interacció, la solució és un mecanisme d’autenticació no interactiu admès, no una altra manera de llançar la mateixa indicació.

--daemon canvia el programa, no l’inici de sessió

--daemon demana al mateix OpenVPN que es desprengui després de la inicialització. El manual de la versió 2.6 assenyala que la redirecció de syslog passa quan es llegeix l’opció, tot i que el desprendre’s passa més tard, així que els missatges poden deixar d’aparèixer al terminal abans del que s’esperava. El silenci després d’aquest punt no demostra res sobre el túnel. Afegiu un --log o --log-append per tal que la sortida arribi en un lloc on la pugueu llegir.

El mode dimoni també elimina la consola permanentment. Una clau privada protegida necessita askpass en aquest mode, i les credencials introduïdes per consola combinades amb opcions de memòria cau poden deixar una reautenticació posterior sense cap lloc on preguntar. Comproveu el model d’autenticació amb la versió instal·lada abans de suposar que una arrencada en segon pla sobreviurà a la primera renovació de clau.

Què compra la validació de sudo i què no

sudo -v valida o refresca la credencial local desada, autenticant si la política ho exigeix. No inicia OpenVPN, no s’autentica amb la passarel·la i no garanteix que una ordre posterior del script estigui permesa. sudo -n significa el contrari: no preguntis, falla. Això fa explícit un error d’autorització local, cosa útil, i no diu res sobre què demanarà OpenVPN més endavant.

Cap de les dues opcions no és motiu per concedir ordres sense contrasenya a tothom ni per enviar una contrasenya d’administrador dins d’un script.

Preferiu un propietari que es pugui observar

Per a un túnel propietat d’una màquina, feu servir la instància de servei que admet la distribució. Aquest propietari ofereix inici, aturada, estat i registres, i sobreviu al final de la vostra sessió. Muntar l’execució en segon pla de l’intèrpret, la demonització i un bucle de reinici l’un al voltant de l’altre crea tres propietaris per a un sol túnel i cap resposta clara de quin està funcionant.

Tant si trieu una cosa com una altra, verifiqueu el recurs pel qual existeix el túnel. Una sol·licitud d’inici correcta és un esdeveniment del procés, no una prova que la connexió funcioni.

Articles relacionats