error de sudo, es el modo 0777, debe ser 0440

26

Recibo errores de sudo, ¿cómo soluciono este error?

sudo: /etc/sudoers is mode 0777, should be 0440
sudo: no valid sudoers sources found, quitting 
usuario20698
fuente
Como los usuarios han notado antes, usar "chmod 0440 / etc / sudoers" cuando el archivo sudoers.d / README tiene el chmod incorrecto NO FUNCIONA.
kentfx
¿Está sugiriendo que cuando el problema está en los permisos /etc/sudoers.d/README, que el error todavía puede decir sudo: /etc/sudoers is mode 0777, should be 0440?
Eliah Kagan el

Respuestas:

26

Primera opción

Siguiendo esta publicación :

  1. Reiniciar PC
  2. Cuando aparezca la pantalla de selección de arranque de GRUB, elija Modo de recuperación. (Si no aparece, presione la Shifttecla cuando vea el cargador GRUB en la parte inferior).
  3. Debería aparecer un terminal negro, en este punto puede ejecutar este comando (debe tener privilegios de root):

    chmod 0440 /etc/sudoers
    

Alternativamente

Tendrá que colocar Ubuntu en un LiveCD, arrancar en el LiveCD, montar su Partición Ubuntu en el Disco Duro (Abra un navegador de archivos, como Nautilus, y haga clic en su Partición Ubuntu; o haga clic en Lugares -> "Partición xxGB / Su Partición Ubuntu ").

Luego, abra una terminal dentro de la sesión de LiveCD y escriba estos dos comandos:

cd /media/<name of permanent ubuntu partition>/etc
sudo chmod 0440 sudoers

Problemas extra

Si hay algún error (como se publica a continuación), siga el mensaje de error y ajuste cada archivo en consecuencia utilizando uno de los dos pasos anteriores:

sudo apt-get update sudo: /etc/sudoers.d/README es modo 0777, debe ser 0440 sudo: / var / lib / sudo de escritura por el no propietario (040777), debe ser modo 0700 [sudo] contraseña para

Arregle siguiendo a través de:

chmod 0440 /etc/sudoers.d/README
chmod 0700 /var/lib/sudo

Ambos comandos se deben usar adecuadamente con los pasos descritos anteriormente. Cambiarán los permisos de archivo asociados con ese archivo. 0440 le dará al propietario (root) y al grupo permisos de lectura y 0700 le dará al propietario (root), leer, escribir y ejecutar permisos.

Alex Stevens
fuente
Puedo usar el comando sudo pero limitado. sudo apt-get update sudo: /etc/sudoers.d/README is mode 0777, should be 0440 sudo: /var/lib/sudo writable by non-owner (040777), should be mode 0700 [sudo] password for
user20698
@ Alex: ESC es para GRUB legacy ¿verdad? Se debe presionar Shift para GRUB2.
Lekensteyn
@ user20698: no necesita sudoel primero, el segundo debe hacerse desde un CD en vivo.
Lekensteyn
Si sudoers es 0777, ¿no debería el usuario poder ejecutar chmod 0440 /etc/sudoerssin sudo ya que todos pueden escribir en sudoers?
Seppo Erviälä
2
@Seppo: no, solo el propietario de un archivo puede cambiar los permisos del archivo.
Lekensteyn
16

sudoestá roto en esta situación, pero pkexec(la interfaz de línea de comandos de PolicyKit ) todavía funciona, por lo que puede solucionarlo con un solo comando. No es necesario reiniciar.

pkexec chmod 0440 /etc/sudoers

Esto supone que PolicyKit está instalado. Si se trata de un sistema de escritorio (en lugar de un servidor sin GUI), lo es.

Eliah Kagan
fuente
4

Arranque en modo de recuperación, elija el shell raíz y:

chmod 0440 /etc/sudoers

O si no desea reiniciar, puede usar esta alternativa:

pkexec chmod 0440 /etc/sudoers
pkexec chmod 0440 /etc/sudoers.d/README

cambiará el permiso. Pruébalo funcionará.

Atul Makwana
fuente
1
¿Por qué estás chmodenviando algunos archivos a 440otros 0440? ¿No deberías usar 0440uniformemente? ¿Y por qué está cambiando los permisos /etc/sudoers.d/READMEcuando usa el pkexeccamino, pero no de otra manera? ¿Y qué hay de otros posibles archivos en /etc/sudoers.d?
Eliah Kagan el
1

¿Qué hiciste para obtener estos errores?

  • Si lo hizo: sudo chmod -R 777 /etcnecesita un Live CD para reparar esto.

    1. Inicie en un Live CD y seleccione "Pruébelo"
    2. Monta tu partición de Ubuntu (o la partición que contiene /etcsi has puesto /etcuna partición separada). Esto se puede hacer usando un navegador de archivos como Nautilus o el menú Lugares
    3. Abra una Terminal yendo a Aplicaciones => Accesorios => Terminal
    4. Determine la carpeta de su partición Ubuntu, puede enumerar el contenido de las particiones montadas mediante ls -l /media. Posiblemente se llama ubuntuo disk. En los próximos pasos, asumiré ubuntu.
    5. En la Terminal, establece permisos restrictivos por defecto:

      sudo find /media/ubuntu/etc -type f -exec chmod g-wx,o-rwx {} \;
      sudo find /media/ubuntu/etc -type d -exec chmod g-w,o-rwx {} \;
      
    6. A continuación, use el Live CD como punto de referencia para restaurar los permisos de archivo. El siguiente comando cambiará los permisos de archivo para /etc/media/ubuntuusar la /etccarpeta en el Live CD como punto de referencia. Solo cambiará los permisos en los archivos ( -type f) y directorios ( -type d) en el mismo sistema de archivos ( -xdev). Cualquier error se escribe en ~/errors.logErrores como "archivo no encontrado" indica que hay un archivo instalado en el sistema, pero que no se encuentra en el Live CD. El comando del paso 5 debería establecer los permisos correctos para ello, pero para obtener los mejores resultados, será mejor que reinstales los paquetes.

      cd /media/ubuntu && sudo find etc -xdev \( -type f -o -type d \) -f -exec chmod --reference=/{} {} \; 2>~/errors.log
      
    7. Ahora seguro en ~/errors.logalgún lugar (como http://paste.ubuntu.com/ ) para que pueda agregarlo como comentario a esta respuesta si tiene algún problema con las aplicaciones.
Lekensteyn
fuente
1

En Ubuntu, primero puedes pulsar Ctrl+ Alt+ Tque abre la terminal. Después de eso, puede copiar y pegar el siguiente comando con Ctrl+ Cy pegar en la terminal con Ctrl+ Shift+ V.

pkexec chmod 0440 /etc/sudoers
K. Kilian Lindberg
fuente
0

Para mí, tuve que agregar un paso más a las pkexecsugerencias, por esto , tuve la suerte de tener 2 sesiones ssh cuando cometí el estúpido error:

  1. Abrir 2 terminales
  2. En la terminal 2, ejecute echo $$para obtener PID
  3. Ejecutar pkttyagent --process PID_FROM_STEP2en la terminal 2
  4. En la terminal 1, ejecute pkexec chmod 0440 /etc/sudoers
  5. En mi caso, también tuve que correr pkexec chown root:root /etc/sudoers
4oo4
fuente