GNU/Linux >> Tutoriales Linux >  >> Linux

10 consejos rápidos sobre el comando sudo para sistemas Linux

Resumen

sudo significa superusuario do . Permite a los usuarios autorizados ejecutar comandos como otro usuario. Otro usuario puede ser un usuario normal o un superusuario. Sin embargo, la mayoría de las veces lo usamos para ejecutar comandos con privilegios elevados.

El comando sudo funciona junto con las políticas de seguridad, la política de seguridad predeterminada es sudoers y se puede configurar a través de /etc/sudoers expediente. Sus políticas de seguridad son altamente extensibles. Uno puede desarrollar y distribuir sus propias políticas como complementos.

En qué se diferencia de su

En GNU/Linux hay dos formas de ejecutar comandos con privilegios elevados:

  • Uso de su comando
  • Uso de sudo comando

su significa cambiar de usuario . Usando su, podemos cambiar al usuario raíz y ejecutar el comando. Pero hay algunos inconvenientes con este enfoque.

  • Necesitamos compartir la contraseña raíz con otro usuario.
  • No podemos dar acceso controlado ya que el usuario root es superusuario
  • No podemos auditar lo que hace el usuario.

sudo aborda estos problemas de una manera única.

  1. En primer lugar, no necesitamos comprometer la contraseña del usuario root. El usuario normal usa su propia contraseña para ejecutar el comando con privilegios elevados.
  2. Podemos controlar el acceso del usuario sudo, lo que significa que podemos restringir al usuario para que ejecute solo ciertos comandos.
  3. Además de esto, todas las actividades del usuario sudo se registran, por lo que siempre podemos auditar qué acciones se realizaron. En GNU/Linux basado en Debian, todas las actividades se registran en /var/log/auth.log archivo.

Las secciones posteriores de este tutorial arrojan luz sobre estos puntos.

Manos a la obra con sudo

Ahora, tenemos un entendimiento justo sobre sudo. Ensuciémonos las manos con la práctica. Para demostración, estoy usando Ubuntu. Sin embargo, el comportamiento con otra distribución debería ser idéntico.

Permitir acceso a sudo

Agreguemos un usuario normal como usuario sudo. En mi caso, el nombre de usuario es linuxtechi

1) Edite el archivo /etc/sudoers de la siguiente manera:

$ sudo visudo

2) Agregue la siguiente línea para permitir el acceso de sudo al usuario linuxtechi:

linuxtechi ALL=(ALL) ALL

En el comando anterior:

  • linuxtechi indica el nombre de usuario
  • Primero, ALL indica que se debe permitir el acceso a sudo desde cualquier terminal/máquina
  • Segundo (TODOS) indica que el comando sudo puede ejecutarse como cualquier usuario
  • Tercero ALL indica que todos los comandos se pueden ejecutar como root

Ejecutar comando con privilegios elevados

Para ejecutar el comando con privilegios elevados, simplemente anteponga la palabra sudo al comando de la siguiente manera:

$ sudo cat /etc/passwd

Cuando ejecute este comando, le pedirá la contraseña de linuxtechi y no la contraseña de usuario root.

Ejecutar comando como otro usuario

Además de esto, podemos usar sudo para ejecutar el comando como otro usuario. Por ejemplo, en el siguiente comando, el usuario linuxtechi ejecuta el comando como usuario devesh:

$ sudo -u devesh whoami
[sudo] password for linuxtechi:
devesh

Comportamiento de comando integrado

Una de las limitaciones de sudo es que el comando integrado de Shell no funciona con él. Por ejemplo, el historial está integrado en el comando, si intenta ejecutar este comando con sudo, el error de comando no encontrado se informará de la siguiente manera:

$ sudo history
[sudo] password for linuxtechi:
sudo: history: command not found

Acceder al shell raíz

Para superar el problema anterior, podemos obtener acceso al shell raíz y ejecutar cualquier comando desde allí, incluido el Shell integrado.

Para acceder al shell raíz, ejecute el siguiente comando:

$ sudo bash

Después de ejecutar este comando, observará que el signo de aviso cambia al carácter de libra (#).

Recetas

En esta sección, discutiremos algunas recetas útiles que lo ayudarán a mejorar la productividad. La mayoría de los comandos se pueden usar para completar tareas diarias.

Ejecutar el comando anterior como usuario sudo

Supongamos que desea ejecutar el comando anterior con privilegios elevados, entonces el siguiente truco será útil:

$ sudo !4

El comando anterior ejecutará el cuarto comando del historial con privilegios elevados.

Si desea ejecutar el comando anterior con privilegios de root usando el comando sudo, use el siguiente comando,

$ sudo !!

comando sudo con Vim

Muchas veces editamos los archivos de configuración del sistema y al guardar nos damos cuenta de que necesitamos acceso de root para hacer esto. Debido a esto podemos perder nuestros cambios. No hay necesidad de entrar en pánico, podemos usar el siguiente comando en Vim para rescatar de esta situación:

:w !sudo tee %

En el comando anterior:

  • Los dos puntos (:) indican que estamos en el modo ex de Vim
  • El signo de exclamación (!) indica que estamos ejecutando el comando de shell
  • sudo y tee son los comandos de shell
  • El signo de porcentaje (%) indica todas las líneas desde la línea actual

Ejecutar múltiples comandos usando sudo

Hasta ahora hemos ejecutado un solo comando con sudo, pero podemos ejecutar múltiples comandos con él. Simplemente separe los comandos usando punto y coma (;) de la siguiente manera:

$ sudo -- bash -c 'pwd; hostname; whoami'

En el comando anterior:

  • El guión doble (–) detiene el procesamiento de las opciones de la línea de comandos
  • bash indica el nombre de shell que se usará para la ejecución
  • Los comandos a ejecutar van seguidos de la opción –c

Ejecutar comando sudo sin contraseña

Cuando el comando sudo se ejecuta por primera vez, se le solicitará una contraseña y, de forma predeterminada, la contraseña se almacenará en caché durante los próximos 15 minutos. Sin embargo, podemos anular este comportamiento y deshabilitar la autenticación de contraseña usando la palabra clave NOPASSWD de la siguiente manera:

linuxtechi ALL=(ALL) NOPASSWD: ALL

Restringir al usuario para ejecutar ciertos comandos

Para proporcionar acceso controlado, podemos restringir al usuario sudo para ejecutar solo ciertos comandos. Por ejemplo, la siguiente línea permite la ejecución de los comandos echo y ls solamente

linuxtechi ALL=(ALL) NOPASSWD: /bin/echo /bin/ls

Agregar línea o cadena de texto a un archivo usando el comando sudo

Hay algunos escenarios en los que agregamos algunas líneas a un archivo existente con un usuario local que tiene derechos sudo,

$ echo 'cadena de texto' | sudo tee -a

El ejemplo se muestra a continuación:

[email protected]:~$ echo "deb http://ftp.de.debian.org/debian buster main contrib" | sudo tee -a /etc/apt/sources.list
deb http://ftp.de.debian.org/debian buster main contrib
[email protected]:~$

Forma alternativa de agregar líneas o texto a un archivo existente usando el comando sudo,

sudo sh -c 'echo "deb http://ftp.de.debian.org/debian buster main contrib" >> /etc/apt/sources.list'

Información sobre sudo

Profundicemos más sobre el comando sudo para obtener información al respecto.

$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 145040 Jun 13  2017 /usr/bin/sudo

Si observa cuidadosamente los permisos de archivo, setuid bit está habilitado en sudo. Cuando cualquier usuario ejecute este binario, se ejecutará con los privilegios del usuario propietario del archivo. En este caso es usuario root.

Para demostrar esto, podemos usar el comando id de la siguiente manera:

$ id
uid=1002(linuxtechi) gid=1002(linuxtechi) groups=1002(linuxtechi)

Cuando ejecutamos el comando id sin sudo, se mostrará la identificación del usuario linuxtechi.

$ sudo id
uid=0(root) gid=0(root) groups=0(root)

Pero si ejecutamos el comando id con sudo, se mostrará la identificación del usuario root.

Conclusión

La conclusión de este artículo es que sudo proporciona un acceso más controlado a los usuarios habituales. Usando estas técnicas múltiples usuarios pueden interactuar con GNU/Linux de manera segura.

Lea también:Cómo crear enlaces rígidos y blandos (enlace simbólico) en sistemas Linux


Linux
  1. 3 consejos para imprimir con Linux

  2. 4 herramientas para construir sistemas Linux embebidos

  3. Domar el comando tar:consejos para administrar copias de seguridad en Linux

  4. ¿Cuál es el equivalente del comando updatedb de Linux para Mac?

  5. Ejecute el comando cd como superusuario en Linux

10 consejos sobre el comando 'dmesg' para Linux Geeks

10 ejemplos útiles de comandos ncat (nc) para sistemas Linux

11 ejemplos útiles de comandos divididos para sistemas Linux

18 ejemplos rápidos de comandos 'lsof' para Linux Geeks

Comando Sudo en Linux

Conceptos básicos de la línea de comandos de Linux:sudo