¿Por qué no puedo ejecutar los comandos sudo en la instancia de Linux de EC2?
Al intentar ejecutar comandos sudo en la instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2), recibo el error «sudo: /usr/bin/sudo debe ser propiedad de uid 0 y tener establecido el bit de setuid» o «sudo: /etc/sudoers tiene permisos de escritura para todos los usuarios».
Descripción corta
El error sudo: «/usr/bin/sudo debe ser propiedad de uid 0 y tener establecido el bit de setuid» se produce cuando el archivo /usr/bin/sudo es propiedad de un usuario no raíz. El archivo /usr/bin/sudo debe tener root:root como propietario.
El error «sudo: /etc/sudoers es world-writable» se produce cuando el archivo /etc/sudoers tiene los permisos incorrectos. El archivo sudoers no puede ser world-writable. Si un archivo es world-writable, todo el mundo puede escribir en él. De forma predeterminada, el modo del archivo sudoers es 0440, lo cual permite al propietario y al grupo leer el archivo, pero impide que cualquier persona escriba en él.
Puede corregir estos errores usando la consola serie de EC2 o un script de datos de usuario.
Resolución
Método 1: Utilizar la consola serie de EC2
Si ha activado la consola serie de EC2 para Linux, puede utilizarla para solucionar problemas con los tipos de instancias basadas en Nitro compatibles. La consola serie le ayuda a solucionar problemas de arranque, configuración de red y configuración de SSH. La consola serie se conecta a su instancia sin necesitar una conexión de red que funcione. Puede acceder a la consola serie mediante la consola de Amazon EC2 o la interfaz de la línea de comandos de AWS (AWS CLI).
Antes de usar la consola serie, conceda acceso a la consola al nivel de la cuenta. A continuación, cree políticas de AWS Identity and Access Management (IAM) que concedan acceso a sus usuarios de IAM. Además, cada instancia que utilice la consola serie debe incluir al menos un usuario basado en contraseña. Si no se puede acceder a su instancia y no ha configurado el acceso a la consola serie, siga las instrucciones de la sección, Método 2: Utilizar un script de datos de usuario. Para obtener información sobre la configuración de la consola serie de EC2 para Linux, consulte Configurar el acceso a la consola serie de EC2.
Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente.
Método 2: Utilizar un script de datos de usuario
Utilice un script de datos de usuario para corregir estos errores en los casos siguientes:
- Distribuciones basadas en Red Hat, como SUSE, CentOS, Amazon Linux 1, Amazon Linux 2 y RHEL.
- Distribuciones basadas en Debian (como Ubuntu).
1. Abra la consola de Amazon EC2 y, a continuación, seleccione la instancia.
2. Elija Acciones, Estado de la instancia y Detener.
Nota: Si la opción Detener no está activada, significa que la instancia ya está detenida o que el dispositivo raíz es un volumen de almacén de instancias.
3. Elija Acciones, Configuración de la instancia, Editar datos de usuario.
4. Copie y pegue el siguiente script en el campo Editar datos de usuario y, a continuación, seleccione Guardar. Asegúrese de copiar el script entero y no introduzca espacios adicionales al pegarlo.
Distribuciones basadas en Red Hat
En las distribuciones basadas en Red Hat, utilice el siguiente script de datos de usuario:
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: rpm --setugids sudo && rpm --setperms sudo find /etc/sudoers.d/ -type f -exec /bin/chmod 0440 {} \; find /etc/sudoers.d/ -type f -exec /bin/chown root:root {} \; --//
Nota: Las dos últimas líneas del comando recuperan los permisos, el propietario y el grupo de complementos personalizados de la política de seguridad de sudo en el directorio «/etc/sudoers.d/».
Distribuciones basadas en Debian
En las distribuciones basadas en Debian, utilice el siguiente script de datos de usuario:
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash /bin/chown root:root /usr/bin/sudo /bin/chmod 4111 /usr/bin/sudo /bin/chmod 644 /usr/lib/sudo/sudoers.so /bin/chmod 0440 /etc/sudoers /bin/chmod 750 /etc/sudoers.d find /etc/sudoers.d/ -type f -exec /bin/chmod 0440 {} \; find /etc/sudoers.d/ -type f -exec /bin/chown root:root {} \; --//
Nota: Las dos últimas líneas del comando recuperan los permisos, el propietario y el grupo de complementos personalizados de la política de seguridad de sudo en el directorio «/etc/sudoers.d/».
5. Inicie la instancia y, a continuación, conéctese a ella mediante SSH.
Nota: Si recibe errores de sintaxis al intentar conectarse a la instancia mediante SSH después de editar el archivo sudoers, consulte He editado el archivo sudoers en mi instancia de EC2 y ahora recibo errores de sintaxis al intentar ejecutar comandos sudo. ¿Cómo puedo solucionar este problema?
Vídeos relacionados

Contenido relevante
- OFICIAL DE AWSActualizada hace 7 meses
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace 4 meses
- OFICIAL DE AWSActualizada hace 2 años