Muchas veces me encuentro que hago scrits en bash que dentro de ellos utilizo comandos que precisan de permisos con sudo. Es molesto que en algunos de ellos tenga que poner en cada ejecución la contraseña.
He estado buscando por internet y he enconttrado una solución, que a persar de ser una brecha en la seguridad del sistema es mucho más fiable que poner un simple: echo "password" como muchos recomiendan.
En mi caso, como con mi portátil tengo problemas al no reconocerme linux el conmutador por hardware de la wifi, tengo que activarla manualmente, y ya de paso hice un pequeño script para detectar las redes, guardarlas, borarlas, etc... y por eso mismo que este script dispone de algunos comandos me propuse buscar una solución.
Primero que nada crearemos un usuario que llamaremos por ejemplo superman, para ello escribiremos en la terminal:
Le ponemos su contraseña:
Una vez creado el usuario abrimos el archivo sudoers para editarlo:
Al final del archivo añadiremos las siguientes lineas:
En la última linea debemos substituir nuestro_usuario con el nombre de usuario que querramos utilizar el script con permisos elevados.
Y con esto ya hemos terminado los cambios. Para comprobar su uso hagamos la prueba. Vamos a poner en la terminal:
Como es lógico nos va a decir que no tenemos permisos para ejecutar el comando. Para ejecutarlo normalmente vamos a terminal de nuevo y ejecutamos:
Nos pide la contraseña y nos saca el archivo en pantalla, pero y si aplicamos el pequeño truco que hemos hecho? Teclemamos en la terminal:
Nos saca el listado sin pedir el password!!
Para usar a dirario en consola no es util, pero si tenemos un script que solo ejecutamos con un click o se ejecuta al inicio del sistema si que es práctico.
Pongamos el ejemplo con un pequeño script. Creamos un archivo en nuestro escritorio llamado por ejemplo prueba.sh y copiamos en su interior:
Lo ejecutamos y nos va a pedir la contraseña como es lógico. Ahora lo editamos y que quede de la siguiente forma:
Fantástico, no??
He estado buscando por internet y he enconttrado una solución, que a persar de ser una brecha en la seguridad del sistema es mucho más fiable que poner un simple: echo "password" como muchos recomiendan.
En mi caso, como con mi portátil tengo problemas al no reconocerme linux el conmutador por hardware de la wifi, tengo que activarla manualmente, y ya de paso hice un pequeño script para detectar las redes, guardarlas, borarlas, etc... y por eso mismo que este script dispone de algunos comandos me propuse buscar una solución.
Primero que nada crearemos un usuario que llamaremos por ejemplo superman, para ello escribiremos en la terminal:
sudo useradd -m -g root -s /bin/bash superman
Le ponemos su contraseña:
sudo passwd superman
Una vez creado el usuario abrimos el archivo sudoers para editarlo:
sudo EDITOR=nano visudo
Al final del archivo añadiremos las siguientes lineas:
# Permite a superman ejecutar cualquier comando en cualquier lugar sin contraseña
superman ALL=(ALL) NOPASSWD: ALL
# Permite a nuestro_usuario ejecutar cualquier comando como usuario: superman sin contraseña
nuestro_usuario ALL=(superman) NOPASSWD: ALL
En la última linea debemos substituir nuestro_usuario con el nombre de usuario que querramos utilizar el script con permisos elevados.
Y con esto ya hemos terminado los cambios. Para comprobar su uso hagamos la prueba. Vamos a poner en la terminal:
cat /etc/sudoers
Como es lógico nos va a decir que no tenemos permisos para ejecutar el comando. Para ejecutarlo normalmente vamos a terminal de nuevo y ejecutamos:
sudo cat /etc/sudoers
Nos pide la contraseña y nos saca el archivo en pantalla, pero y si aplicamos el pequeño truco que hemos hecho? Teclemamos en la terminal:
sudo -u superman sudo cat /etc/sudoers
Nos saca el listado sin pedir el password!!
Para usar a dirario en consola no es util, pero si tenemos un script que solo ejecutamos con un click o se ejecuta al inicio del sistema si que es práctico.
Pongamos el ejemplo con un pequeño script. Creamos un archivo en nuestro escritorio llamado por ejemplo prueba.sh y copiamos en su interior:
#!/bin/bash
sudo cat /etc/sudoers
exit 0
Lo ejecutamos y nos va a pedir la contraseña como es lógico. Ahora lo editamos y que quede de la siguiente forma:
#!/bin/bash
sudo -u superman sudo cat /etc/sudoers
exit 0
Fantástico, no??