GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo ejecutar comandos particulares sin contraseña Sudo en Linux

Uso un script en mi sistema Ubuntu implementado en AWS. El objetivo principal de este script es verificar si un servicio específico se está ejecutando a intervalos regulares (cada minuto para ser precisos) e iniciar ese servicio automáticamente si se detiene por algún motivo. Pero el problema es que necesito privilegios de sudo para iniciar el servicio. Como ya sabrá, debemos proporcionar una contraseña cuando ejecutamos algo como usuario sudo. Pero no quiero hacer eso. Lo que realmente quiero hacer es ejecutar el servicio como Sudo sin contraseña. Si alguna vez se encuentra en una situación como esta, conozco una pequeña solución. Hoy, en esta breve guía, le enseñaré cómo ejecutar comandos particulares sin la contraseña de sudo en sistemas operativos Linux y similares a Unix.

Echa un vistazo al siguiente ejemplo.

$ sudo mkdir /ostechnix
[sudo] password for sk:

Como puede ver en la captura de pantalla anterior, debo proporcionar la contraseña de sudo al crear un directorio llamado ostechnix en la carpeta raíz (/). Siempre que intentemos ejecutar un comando con privilegios sudo, debemos ingresar la contraseña. Sin embargo, en mi escenario, no quiero proporcionar la contraseña de sudo. Esto es lo que hice para ejecutar un comando sudo sin contraseña en mi caja de Linux.

Descargo de responsabilidad: Esto es sólo para fines educativos. Debe tener mucho cuidado al aplicar este método. Este método es a la vez productivo y destructivo. Digamos, por ejemplo, si permite que los usuarios ejecuten 'rm' comando sin la contraseña de sudo, podrían eliminar accidental o intencionalmente cosas importantes. ¡Has sido advertido!

Ejecutar comandos particulares sin contraseña sudo en Linux

Por alguna razón, si desea permitir que un usuario ejecute un determinado comando sin proporcionar la contraseña de sudo, debe agregar ese comando en sudoers archivo.

Quiero que el usuario se llame sk para ejecutar mkdir comando sin dar la contraseña de sudo. Veamos cómo hacerlo.

Editar archivo sudoers:

$ sudo visudo

Agregue la siguiente línea al final del archivo.

sk ALL=NOPASSWD:/bin/mkdir

Toma, sk es el nombre de usuario. Según la línea anterior, el usuario sk puede ejecutar 'mkdir' comando desde cualquier terminal, sin contraseña sudo.

Puede agregar comandos adicionales (por ejemplo, chmod ) con valores separados por comas como se muestra a continuación.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

Guarde y cierre el archivo. Cierre sesión (o reinicie) su sistema. Ahora, inicie sesión como usuario normal 'sk' e intente ejecutar esos comandos con sudo y vea qué sucede.

$ sudo mkdir /dir1

¿Ver? Aunque ejecuté 'mkdir' comando con privilegios de sudo, no había solicitud de contraseña. A partir de ahora, el usuario sk no tiene que ingresar la contraseña de sudo mientras ejecuta 'mkdir' comando.

Cuando ejecute todos los demás comandos, excepto los comandos agregados en los archivos sudoers, se le pedirá que ingrese la contraseña de sudo.

Ejecutemos otro comando con sudo.

$ sudo apt update

¿Ver? Este comando me pide que ingrese la contraseña de sudo.

Si no desea que este comando le pida que solicite la contraseña de sudo, edite el archivo sudoers:

$ sudo visudo

Agrega el 'apt' comando en el archivo visudo como a continuación:

sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt

¿Notó que la ruta del archivo ejecutable binario apt es diferente de mkdir? Sí, debe proporcionar la ruta correcta del archivo ejecutable. Para encontrar la ruta del archivo ejecutable de cualquier comando, por ejemplo, 'apt' , usa 'whereis' comando como a continuación.

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

Como puede ver, el archivo ejecutable para el comando apt es /usr/bin/apt , por lo tanto, lo agregué en el archivo sudoers.

Como ya mencioné, puede agregar cualquier número de comandos con valores separados por comas. Guarde y cierre su archivo sudoers una vez que haya terminado. Cierre sesión y vuelva a iniciar sesión en su sistema.

Ahora, verifique si puede ejecutar el comando sin usar la contraseña sudo:

$ sudo apt update

¿Ver? El comando apt no me solicitó la contraseña aunque lo ejecuté con sudo.

Aquí hay otro ejemplo más. Si desea ejecutar un servicio específico, por ejemplo apache2, agréguelo como se muestra a continuación.

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2

Ahora, el usuario puede ejecutar 'sudo systemctl restart apache2' comando sin contraseña sudo.

Descarga recomendada - Hoja de referencia gratuita:"Hoja de referencia de la línea de comandos de Linux"

¿Puedo volver a autenticarme en un comando en particular en el caso anterior? ¡Por supuesto que sí! Simplemente elimine el comando agregado. Cierra la sesión y vuelve a iniciarla.

Alternativamente, puede agregar 'PASSWD:' directiva delante del comando. Mira el siguiente ejemplo.

Agregue/modifique la siguiente línea como se muestra a continuación.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

En este caso, el usuario sk puede ejecutar 'mkdir' y 'chmod' comandos sin ingresar la contraseña de sudo. Sin embargo, debe proporcionar la contraseña sudo al ejecutar 'apt' comando.

Lectura sugerida:

  • Cómo otorgar y quitar privilegios de Sudo a los usuarios de Ubuntu
  • Cómo cambiar el archivo de registro Sudo predeterminado en Linux
  • Cómo restaurar los privilegios de Sudo a un usuario
  • Cómo encontrar todos los usuarios de Sudo en su sistema Linux
  • Cómo forzar a los usuarios a usar la contraseña de root en lugar de su propia contraseña cuando usan sudo

Linux
  1. Ejecute contenedores en Linux sin sudo en Podman

  2. Cómo mostrar asteriscos al escribir la contraseña de Sudo en Linux

  3. ¿Cómo ejecutar comandos bash de Linux en un script PERL?

  4. ¿Cómo ejecutar un programa específico como root sin una solicitud de contraseña?

  5. Ssh:¿necesito un Tty para ejecutar Sudo si puedo Sudo sin contraseña?

Cómo cambiar el tiempo de espera de la contraseña de Sudo en Linux

Cómo ejecutar múltiples comandos de Linux en un solo comando

Cómo ejecutar comandos Sudo sin contraseña

Cómo ejecutar varios comandos de Linux a la vez en la terminal de Linux

Cómo ejecutar un alias con Sudo en Linux

Cómo ejecutar comandos sudo sin contraseña