En la página, se proporcionan sugerencias para usar la utilidad de la línea de comandos de sudo, administrar el complemento de
sudoers y evitar o solucionar los problemas que surjan.
Causas de los problemas
Durante cada ejecución del comando sudo, se lleva a cabo el siguiente proceso
para validar los archivos sudoers:
- Se verifica que la sintaxis sea correcta.
- El contenido se analiza para excluir algunos de los errores lógicos.
- Se verificaron la propiedad y los permisos.
Es posible que la validación de los archivos sudoers falle debido a cualquiera de los siguientes
errores:
Errores de sintaxis
Cuando realices cambios en los archivos sudoers, debes seguir reglas de sintaxis
específicas. Cualquier desviación de esta sintaxis, incluidos, sin límites, un carácter faltante o adicional, o una coma inadecuada, puede hacer que el archivo sea no válido. La invalidación del archivo hace que sea imposible usar la utilidad
sudo.
Solución
La solución es usar la utilidad visudo para editar los archivos sudoers. Esta
valida el contenido del archivo antes de guardarlo y notifica en caso de problemas. La
utilidad visudo se creó para editar el archivo de manera segura.
En los siguientes ejemplos, se muestran ejemplos de sintaxis correcta e incorrecta:
Sintaxis correcta
user ALL=(ALL) ALL
Sintaxis incorrecta
user ALL=(ALL), ALL
Ejemplo de errores de sintaxis
$ sudo useradd username
/etc/sudoers:20:17: syntax error
user ALL=(ALL), ALL
^
Errores lógicos
Los errores de este tipo se pueden deber a uno de los siguientes motivos:
- Un malentendido de los principios del complemento
sudoers - Desviaciones de la sintaxis correcta
Sin embargo, no se reconocen errores lógicos durante la validación porque no incumplen las reglas de sintaxis y, por lo tanto, son difíciles de detectar.
Solución
Lee atentamente la documentación oficial y cumple con sus principios cuando edites el archivo.
Google también te recomienda usar la utilidad visudo para editar los archivos
sudoers, ya que pueden detectar algunos tipos de errores lógicos, como los siguientes:
- Alias no definidos o sin usar
- Referencias cíclicas
- Entradas duplicadas
Si se detectan problemas, verás un mensaje de advertencia.
En los siguientes ejemplos, se muestran ejemplos correctos e incorrectos de forma lógica:
Lógicamente correcto
barbara ALL=(ALL:ALL) /usr/bin/ls
Lógicamente incorrecto
barbara ALL=(4LL:ALL) /usr/bin/ls
^
barbara ALL=(ALL;ALL) /usr/bin/ls
^
bar6ara ALL=(ALL:ALL) /usr/bin/1s
^ ^
Permisos incorrectos
Además de los errores que genera el contenido de los archivos sudoers, los
permisos de archivo excesivos o la propiedad incorrecta también pueden provocar que la utilidad sudo
falle.
Solución
Verás una descripción de estos errores en el resultado del comando sudo con
errores. Lee la descripción del mensaje de error y realiza las correcciones
necesarias.
A continuación, se muestra un ejemplo de la los permisos de archivo y propiedad correctos.
$ ls -l /etc/sudoers
-r--r----- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
En el siguiente ejemplo, se muestra el error que aparece cuando hay permisos redundantes para el grupo de permisos todos los usuarios:
$ ls -l /etc/sudoers
-r--r---w- 1 root root 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
En el siguiente ejemplo, se muestra el error que aparece para propiedades incorrectas. En este ejemplo, un usuario con un ID
que no sea 0 (o un usuario que no sea root) es el propietario del archivo:
$ ls -l /etc/sudoers
-r--r----- 1 user user 700 Jan 1 12:00 /etc/sudoers
$ sudo useradd username
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: error initializing audit plugin sudoers_audit
Para obtener más información sobre la configuración de los archivos sudoers, lee el
manual de Sudoers.
Para obtener información sobre cómo administrar y usar el editor de visudo, consulta el
manual de Visudo.
Consecuencias de los problemas
Los problemas en los archivos sudoers causan efectos negativos y pueden afectar
la funcionalidad de todo el sistema.
El comando
sudoya no funciona.Esta es la consecuencia más notable de los problemas en los archivos
sudoers. La consecuencia de esto es la incapacidad de usar privilegios elevados para usuarios, lo que bloquea su actividad en el servidor.Sin embargo, las consecuencias más destructivas e impredecibles son las fallas de las aplicaciones que dependen del comando
sudo. En algunos casos, esto puede causar que la aplicación falle por completo, lo que lleva a un comportamiento, fallas o pérdida de datos inesperados. Otro ejemplo es cuando al comandosudolo llama una aplicación durante la secuencia de inicio del SO y falla. Puede provocar fallas del SO o que la secuencia de inicio se detenga.Posible acceso no autorizado al sistema.
Otra consecuencia riesgosa es que los problemas de los archivos
sudoerspueden provocar acceso no autorizado al sistema. Esto puede ocurrir debido a un error lógico, cuando las reglas de los archivossudoersotorgan a algunos usuarios o grupos una cantidad excesiva de permisos.Esto también se puede deber a que el propietario del sistema inhabilita o debilita temporalmente debilita las defensas del sistema para iniciar sesión y solucionar el problema.
Recuperación en caso de problemas
Si pierdes los privilegios de usuario elevados o no puedes usar el comando sudo debido a
problemas con los archivos sudoers, usa la cuenta de superusuario para la recuperación.
En sistemas operativos similares a Unix, el superusuario es una cuenta de usuario especial con ID,
igual a 0, que, por lo general, se llama root. El superusuario tiene acceso completo a los
recursos del sistema y puede realizar cualquier tarea administrativa sin restricciones.
Aunque interactuar con el SO en nombre del superusuario se suele considerar una acción insegura
puede ser la única opción para realizar ciertas tareas, como la recuperación de los archivos
sudoers.
Acceder directamente como el superusuario pone en riesgo el SO. Para evitar este riesgo, Google recomienda que uses una funcionalidad de secuencia de comandos de inicio, ya que esta se ejecuta en nombre del superusuario.
Lee sobre las Secuencias de comandos de inicio de Compute Engine.
Para recuperar los archivos sudoers con una secuencia de comandos de inicio, haz lo siguiente:
Crea una copia de seguridad de la secuencia de comandos de inicio actual si ya está en uso. El enfoque de copia de seguridad depende de cómo se configure la secuencia de comandos de inicio.
startup-script
Si el contenido de la secuencia de comandos se establece directamente en el valor de los metadatos, puedes copiar el contenido de la secuencia de comandos en el archivo local del bucket de Cloud Storage o en cualquier otro almacenamiento privado temporal.
startup-script-url
Si el contenido de la secuencia de comandos ya se encuentra en el almacenamiento remoto y se usa su dirección URL, puedes quitar temporalmente la La clave de metadatos
startup-script-urlpara inhabilitar la secuencia de comandos de inicio actual.Actualiza la secuencia de comandos de inicio con la siguiente secuencia de comandos:
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s") && echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers && chown 0:0 /etc/sudoers && chmod 0440 /etc/sudoersMás información sobre lo que hacen los comandos
-
mv /etc/sudoers /etc/sudoers.backup.$(date +"%s") -
Este comando crea una copia del archivo
/etc/sudoerscon un nombre diferente y borra el archivo original. El nombre del archivo nuevo contiene una marca de tiempo al final de la unicidad (p. ej.,sudoers.backup.1672527600). -
echo "%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers -
Este comando crea un archivo borrado anteriormente
/etc/sudoerscon una sola regla que permite autorizar Google Cloud usuarios con acceso a la VM para ejecutar comandos en nombre de cualquier usuario del sistema. Esta regla siempre existe de forma predeterminada en un archivo/etc/sudoers.d/google_sudoers -
chown 0:0 /etc/sudoers -
Con este comando, se establece el propietario del archivo
/etc/sudoersen un usuario cuyo ID es0y un grupo de propietarios de un grupo cuyo ID es0. -
chmod 0440 /etc/sudoers -
Este comando establece permisos para el archivo
/etc/sudoersen modo de solo lectura y solo les permite a su propietario y grupo de propietarios leer el archivo.
-
Detén la VM, si se está ejecutando. Reinicia la VM para activar la ejecución de la secuencia de comandos de inicio.
Establece la conexión a la VM y edita el archivo
sudoersdañado para recuperarlo.sudo visudo /etc/sudoers.backup.TIMESTAMPGuarda los cambios y reemplaza el archivo
/etc/sudoersactual por el archivo que acabas de editar.sudo mv /etc/sudoers.backup.TIMESTAMP /etc/sudoersAsegúrate de que el problema original con el uso del comando
sudoy los privilegios elevados se hayan arreglado.Quita la secuencia de comandos de inicio temporal y restablece la original si se había usado.
Próximos pasos
- Aprende a recuperar una VM inaccesible o dañada.
- Obtén más información para agregar un disco existente a otra VM.