Cómo controlar el acceso a sudo en Linux

Contenidos

Una ventana de terminal de Linux en un escritorio estilo Ubuntu.

los sudo El comando te posibilita ejecutar comandos en Linux como si fueras otra persona, como root. sudo además te posibilita controlar quién puede entrar root's capacidades, con granularidad. Otorgue a los usuarios acceso completo o permítales utilizar un pequeño subconjunto de comandos. Te mostramos cómo.

Permisos sudo y root

Todos hemos escuchado (la simplificación excesiva) que todo en Linux es un archivo. En realidad, prácticamente todo en el sistema operativo, desde procesos, archivos, directorios, sockets y tuberías, se comunican con el kernel a través de un descriptor de archivos. Asi que aún cuando todo no es un archivo, la mayoría de los objetos del sistema operativo se manejan como si Ellos eran. Siempre que sea factible, el diseño de los sistemas operativos Linux y tipo Unix se adhiere a este principio.

El concepto de «todo es un archivo» tiene un gran alcance en Linux. Es fácil ver entonces cómo los permisos de archivos en Linux se convirtieron en uno de los pilares de los privilegios y derechos de los usuarios. Si posee un archivo o directorio (un tipo especial de archivo), puede hacer lo que quiera con él, inclusive editarlo, renombrarlo, moverlo y eliminarlo. Además puede determinar los permisos en el archivo para que otros usuarios o grupos de usuarios puedan leer, modificar o ejecutar el archivo. Todos se rigen por estos permisos.

Todos los que, al mismo tiempo del superusuario, se conocen como root. los root cuenta es una cuenta con privilegios especiales. No está sujeto a los permisos de ninguno de los objetos del sistema operativo. El usuario root puede hacer cualquier cosa y, prácticamente, en cualquier momento.

Desde luego, cualquiera que tenga acceso a root's contraseña puede hacer lo mismo. Podrían causar estragos de forma maliciosa o accidental. En realidad, el root El usuario además puede causar estragos si comete un error. Nadie es infalible. Es algo peligroso.

Es es por esto que que ahora se considera una mejor práctica no iniciar sesión como root en absoluto. Inicie sesión con una cuenta de usuario frecuente y utilice sudo para eleva tus privilegios por un corto período de tiempo Los necesitas. A menudo, eso es solo para emitir un solo comando.

RELACIONADO: ¿Qué significa «todo es un archivo» en Linux?

La lista de sudoers

sudo ya estaba instalado en las computadoras Ubuntu 18.04.3, Manjaro 18.1.0 y Fedora 31 utilizadas para investigar este post. Esto no es una sorpresa. sudo ha existido desde principios de la década de 1980 y se ha convertido en el medio estándar de operación de superusuario para casi todas las distribuciones.

Cuando instala una distribución moderna, el usuario que crea durante la instalación se agrega a una lista de usuarios llamada sudoers. Estos son los usuarios que pueden usar el sudo mando. Debido a que tú tienes sudo poderes, puede usarlos para agregar otros usuarios a la lista de sudoers.

Desde luego, es imprudente entregar el estado de superusuario completo a voluntad o a cualquiera que tenga solo una necesidad parcial o específica. La lista de sudoers le posibilita especificar qué comandos pueden utilizar los distintos usuarios sudo con. De esa manera, no les da las llaves del reino, pero aún pueden lograr lo que necesitan hacer.

Ejecución de un comando como otro usuario

Originalmente, se llamaba “superusuario hacer”, debido a que podía hacer cosas como superusuario. Su alcance se ha ampliado ahora y puede usar sudo para ejecutar un comando como si fuera cualquier usuario. Se le ha cambiado el nombre para reflejar esa nueva funcionalidad. Ahora se denomina «usuario sustituto».

Utilizar sudo para ejecutar un comando como otro usuario, necesitamos utilizar el -u opción (usuario). Aquí, vamos a ejecutar el quién soy comando como el usuario mary. Si utiliza el sudo comando sin el -u opción, ejecutará el comando como root.

Y de todos modos, debido a que estás usando sudo se le pedirá su contraseña.

sudo -u mary whoami

La solución de whoami nos dice que la cuenta de usuario que ejecuta el comando es mary.

Puedes utilizar el sudo comando para iniciar sesión como otro usuario sin conocer su contraseña. Se le pedirá su propia contraseña. Necesitamos utilizar el -i (inicio de sesión) opción.

sudo -i -u mary
pwd
whoami
ls -hl
exit

Has iniciado sesión como mary. Los archivos «.bashrc», «.bash_aliases» y «.profile» para la cuenta de usuario de mary se procesan exactamente como si el propietario de la cuenta de usuario de mary hubiera iniciado sesión.

  • El símbolo del sistema cambia para reflejar que esta es una sesión para la cuenta de usuario mary.
  • los pwdrepite el comando en el que estás ahora mary's directorio de inicio.
  • whoami nos dice que está usando una cuenta de usuario mary.
  • Los archivos del directorio pertenecen al mary cuenta de usuario.
  • los exit el comando te devuelve a su sesión de cuenta de usuario normal.

Editando el archivo sudoers

Para agregar usuarios a la lista de personas que pueden utilizar sudo , necesitas editar el sudoers expediente. Es de vital relevancia que solo lo haga usando el visudo mando. los visudo El comando evita que varias personas intenten editar el archivo sudoers al mismo tiempo. Además realiza la verificación y el análisis sintáctico en el contenido del archivo a medida que los guarda.

Si sus ediciones no pasan las pruebas, el archivo no se guarda a ciegas. Tienes opciones. Puede cancelar y abandonar los cambios, volver atrás y editar los cambios nuevamente, o forzar que se guarden las ediciones incorrectas. La última opción es una muy mala idea. No caigas en la tentación de hacer eso. Puede encontrarse en una situación en la que todo el mundo se bloquea accidentalmente para que no se pueda utilizar sudo.

Aún cuando inicie el procedimiento de edición con la visudo mando, visudo no es un editor. Llama a uno de sus editores existentes para que realice las ediciones del archivo. En Manjaro y Ubuntu, el visudo comando lanzado el editor simple nano. En Fedora, visudo lanzó el más capazpero menos intuitivovim.

RELACIONADO: Cómo salir del editor Vi o Vim

Si prefiere utilizar nano en Fedora, puede hacerlo fácilmente. Primero, instale nano:

sudo dnf instalar nano

Y posteriormente visudo tenía que ser invocado con este comando:

sudo EDITOR=nano visudo

Parece un buen candidato para un alias. los nano El editor se abre con el archivo sudoers cargado en él.

nano editor con el archivo sudoers cargado en él

Agregar usuarios al grupo sudo

Utilizar visudo para abrir el archivo sudoers. Utilice este comando o el descrito previamente para especificar el editor de su elección:

sudo visudo

Desplácese por el archivo sudoers hasta que vea la definición del %sudo entrada.

El archivo sudoers con la línea% sudo resaltada

El signo de porcentaje indica que se trata de una definición de grupo y no de una definición de usuario. En algunas distribuciones, el %sudo la línea tiene un hash # al comienzo de la línea. Esto hace que la línea sea un comentario. Si este es el caso, elimine el hash y guarde el archivo.

los %sudo la línea se divide así:

  • % sudo: El nombre del grupo.
  • TODOS =: Esta regla se aplica a todos los hosts de esta red.
  • (TODO TODO): los miembros de este grupo pueden ejecutar comandos como todos los usuarios y todos los grupos.
  • Todos: los miembros de este grupo pueden ejecutar todos los comandos.

Para reformularlo un poco, los miembros de este grupo pueden ejecutar cualquier comando, como cualquier usuario o grupo, en esta computadora o en cualquier otro host de esta red. Entonces, una forma simple de otorgar privilegios de root a alguien y la capacidad de utilizar sudo, es agregarlos al sudo grupo.

Tenemos dos usuarios, Tom y Mary, con cuentas de usuario. tom y mary respectivamente. Agregaremos una cuenta de usuario tom al sudo grupo con el usermod mando. los -G La opción (grupos) especifica el grupo al que vamos a agregar el tom cuenta a. los -a (añadir) opción agrega este grupo a la lista de grupos la cuenta de usuario tom ya está en. Sin esta opción, la cuenta de usuario tom se colocaría en el nuevo grupo pero se eliminaría de cualquier otro grupo.

sudo usermod -a -G sudo tom

Veamos en qué grupos está Mary:

groups

La cuenta de usuario mary está solo en el mary grupo.

Comprobemos con Tom:

groups

los tom cuenta de usuario, y por eso, Tom, está en los grupos tom y sudo.

Intentemos que Mary haga algo que requiera sudo privilegios.

sudo less /etc/shadow

Mary no puede mirar dentro del archivo restringido «/ etc / shadow». Ella recibe una leve reprimenda por tratar de utilizar sudo sin permiso. Veamos cómo le va a Tom:

sudo less /etc/shadow

Tan pronto como Tom ingresa su contraseña, se le muestra el archivo / etc / shadow.

Con solo agregarlo a la sudo grupo, ha sido elevado a las filas de élite de aquellos que pueden utilizar sudo. Absolutamente sin restricciones.

Otorgar a los usuarios derechos de sudo restringidos

Tom se ha dado por completo sudo derechos. El puede hacer cualquier cosa que rootO cualquier otra persona en el sudo grupo — puede hacer. Eso podría otorgarle más poder del que estás feliz de entregar. A veces existe el requisito de que un usuario realice una función que requiera root privilegios, pero no hay un caso justificable para que tengan plenos sudo acceso. Puede lograr ese equilibrio agregándolos al archivo sudoers y enumerando los comandos que pueden utilizar.

Conozcamos a Harry, propietario de la cuenta de usuario. harry. El no esta en el sudo grupo, y no tiene sudo privilegios.

groups

Es útil que Harry pueda instalar software, pero no queremos que tenga sudo derechos. Está bien, no hay problema. vamos a encender visudo:

sudo visudo

Desplácese hacia abajo por el archivo hasta que pase las definiciones de grupo. Vamos a agregar una línea para Harry. Debido a que este es un usuario definición y no una definición de grupo, no es necesario comenzar la línea con un signo de porcentaje.

entrada de archivo sudoer para harry

La entrada para la cuenta de usuario harry es:

harry    ALL=/usr/bin/apt-get

Tenga en cuenta que hay una pestaña entre «Harry» y «TODOS =».

Esto se lee como cuenta de usuario harry puede usar los comandos enumerados en todos los hosts conectados a esta red. Hay un comando en el listado, que es «/ usr / bin / apt-get». Podemos otorgarle acceso a Harry a más de un comando agregándolos a la lista de comandos, separados por comas.

Agregue la línea al archivo sudoers y guarde el archivo. Si desea verificar que la línea sea sintácticamente correcta, podemos preguntar visudo para escanear el archivo y verificar la sintaxis por nosotros, usando el -c (marque solo) opción:

sudo visudo -c

Los controles se llevan a cabo y visudo informa que todo está bien. Harry ahora debería poder utilizar apt-get para instalar software pero debe ser rechazado si intenta utilizar cualquier otro comando que requiera sudo.

sudo apt-get install finger

La Apropiada sudo Se han concedido derechos a Harry y puede instalar el software.

¿Qué sucede si Harry intenta utilizar un comando distinto que necesita sudo?

sudo shutdown now

Harry no puede ejecutar el comando. Le hemos concedido con éxito acceso específico y restringido. Puede utilizar el comando designado y nada más.

Uso de alias de usuario de sudoers

Si queremos darle a Mary los mismos privilegios, podríamos agregar una línea en el archivo sudoers para la cuenta de usuario. mary exactamente de la misma manera que hicimos con Harry. Otra manera más ordenada de lograr lo mismo es usar un User_Alias.

en el archivo sudoers, un User_Alias contiene una lista de nombres de cuentas de usuario. El nombre de User_Alias posteriormente se puede utilizar en una definición para representar todas esas cuentas de usuario. Si desea cambiar los privilegios de esas cuentas de usuario, solo cuenta con una línea para editar.

Vamos a crear un User_Alias y utilícelo en nuestro archivo sudoers.

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.

Añade el User_Alias escribiendo:

User_Alias INSTALLERS = harry, mary

Cada elemento está separado por un espacio, no por una pestaña. La lógica se descompone como:

  • User_Alias: Esto dice visudo esto va a ser un User_Alias.
  • INSTALADORES: Este es un nombre arbitrario para este alias.
  • = Harry, María: La lista de usuarios que se incluirán en este alias.

Ahora editaremos la línea que agregamos previamente para la cuenta de usuario. harry:

harry    ALL=/usr/bin/apt-get

Cámbielo para que diga:

INSTALLERS    ALL=/usr/bin/apt-get

Esto dice que todas las cuentas de usuario incluidas en la definición de «INSTALADORES» User_Alias puede ejecutar el apt-get mando. Podemos probar esto con Mary, quien ahora debería poder instalar el software.

sudo apt-get install colordiff

María puede instalar el software debido a que está en «INSTALADORES» User_Alias, y eso User_Alias se le han concedido esos derechos.

Tres trucos rápidos de sudo

Cuando te olvidas de agregar sudo a un comando, escriba

sudo !!

Y el último comando se repetirá con sudo añadido al inicio de la línea.

Una vez que hayas usado sudo y autenticado con su contraseña, no tendrá que utilizar su contraseña con más sudo comandos durante 15 minutos. Si desea que se olvide su autenticación de inmediato, utilice:

sudo -k

Alguna vez te preguntaste donde puedes ver fallado sudo intentos de comando? Van al archivo “/var/log/auth.log”. Puedes verlo con:

less /var/log/auth.log

Podemos ver la entrada de la cuenta de usuario mary que inició sesión en TTY pts / 1 cuando intentó ejecutar el shutdown comando como usuario «root».

Con gran poder …

… viene la capacidad de delegar partes a otros. Ahora sabe cómo empoderar a otros usuarios de forma selectiva.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.