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
sudo
ya 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 comandosudo
lo 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
sudoers
pueden provocar acceso no autorizado al sistema. Esto puede ocurrir debido a un error lógico, cuando las reglas de los archivossudoers
otorgan 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-url
para 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/sudoers
Má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/sudoers
con 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/sudoers
por una sola regla que permita autorizar los usuarios de Google Cloud 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/sudoers
en un usuario cuyo ID es0
y un grupo de propietarios de un grupo cuyo ID es0
. -
chmod 0440 /etc/sudoers
-
Este comando establece permisos para el archivo
/etc/sudoers
en 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
sudoers
dañado para recuperarlo.sudo visudo /etc/sudoers.backup.TIMESTAMP
Guarda los cambios y reemplaza el archivo
/etc/sudoers
actual por el archivo que acabas de editar.sudo mv /etc/sudoers.backup.TIMESTAMP /etc/sudoers
Asegúrate de que el problema original con el uso del comando
sudo
y 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.