Hoy tuve que hacer un malabar en un sistema Mageia de la UTU que yo mismo administro.
Los sistemas Linux que pasan por mí, son endurecidos a un nivel bastante paranoico, y una de las primeras cosas que hago, es quitar a los usuarios del grupo "wheel" para que no puedan hacer "sudo"; o sos root, o no sos root: nada de filosofía Linux, acá lo que corre es filosofía UNIX.
Lo que esto significa, es que si no sabés la contraseña de root y hacés sudo, no podrás seguir adelante porque el sistema, lo que te pedirá, será tu contraseña (un contrasentido total heredado del mundo de fantasía en el que está viviendo Linux desde hace muchos años) y no la de root.
Observá los 2 ejemplos en las siguientes 2 imágenes. ¿Te ha sucedido algo así?
Imagen proporcionada por Hugo Napoli.
Imagen: https://www.linuxuprising.com/2019/09/fix-username-is-not-in-sudoers-file.html
Imagen: https://www.linuxuprising.com/2019/09/fix-username-is-not-in-sudoers-file.html
Pues bien, hay veces en las cuales hacer "su" y registrarse como root en la terminal (aunque poseas la contraseña de root) no es suficiente, ya que la ejecución de un programa o script puede necesitar "los privilegios de sudo pero en el contexto del usuario que inició sesión en el sistema". Por ejemplo, si el usuario es "estudiante" y el script tiene que correr para "estudiante", no podés hacer "su" en la terminal y "pasarte a sudo completamente", porque el contexto del usuario "estudiante" se perdería.
Tampoco podés hacer "sudo ALGO" siendo usuario "estudiante sin wheel" porque te pasaría lo que se muestra en las imágenes de arriba.
Pues, en Linux hay solución para casi todo, y esta no es la excepción.
Podés agregar a cualquier usuario al grupo wheel, o al archivo de sudoers.
Pero esto rompería la filosofía UNIX en donde "root es root" y "user es user"
Podés "pasarte a root", como dijimos antes, pero eso rompería el contexto del usuario que realmente necesita correr el script "para él y no para root".
Entonces... parecería que no hay solución... ¿o sí?
Tampoco podés hacer "sudo ALGO" siendo usuario "estudiante sin wheel" porque te pasaría lo que se muestra en las imágenes de arriba.
Pues, en Linux hay solución para casi todo, y esta no es la excepción.
Podés agregar a cualquier usuario al grupo wheel, o al archivo de sudoers.
Pero esto rompería la filosofía UNIX en donde "root es root" y "user es user"
Podés "pasarte a root", como dijimos antes, pero eso rompería el contexto del usuario que realmente necesita correr el script "para él y no para root".
Entonces... parecería que no hay solución... ¿o sí?
Estarás pensando... "Páh... Soy yo el administrador; soy yo el que prohíbe hacer "sudo". En mis equipos, si no sabés la contraseña root, no podés elevar privilegios usando tu contraseña... Tiene que haber manera. Soy el "admin", sé la contraseña de root, solo debo hacer que el sistema lo entienda sin reconfigurar nada, haciendo algo al vuelo...
Esto es posible. La "línea salvadora" es esta:
su -c "SUDO_USER=<NOMBRE_USUARIO> bash /ruta_al_script" root
Esto no solamente soluciona el problema, sino que también ejecuta al script como root, pero con SUDO_USER configurado para el usuario real, procedimiento que será utilizado por el script para saber a quién pertenece el entorno: solo tenés que sustituir <NOMBRE_USUARIO> por el nombre del usuario real.
Ejemplo con el usuario "estudiante":
su -c "SUDO_USER=estudiante bash /ruta_al_script" root


0 Comentarios:
Publicar un comentario