¿Cómo arreglar sudo después de "chmod -R 777 / usr / bin"?


15

Entré chmod -R 777 /usr/biny ahora sudo no funciona.

Dice sudo must be setuid root.

Algunos consejos en línea dicen que se ejecute chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo.

Al ingresar chown root:root /usr/bin/sudomuestra un opened in readonly modeerror.


1
Debe ser root para ejecutar esos comandos

Manoj Kumar: ¿ El pkexecmétodo en mi respuesta (que has marcado como aceptado) resolvió este problema por ti? Me he convencido de que, como han comentado Damien Roche y Oli, este método no funciona realmente después de que un sudo chmod -R 777 /usr/bincomando se haya completado con éxito. Al igual sudo, pkexectiene que ser setuid root para que funcione. (No estoy seguro de por qué, ya que usa el servicio polkit , pero lo hace). Sin embargo, creo que he oído a otras personas decir que esto les ha funcionado, ¡lo cual es curioso! ¿Había presionado Ctrl + C antes de que 777terminara el comando chmod?
Eliah Kagan

Hola. Este método realmente me funcionó después de que accidentalmente ejecuté con éxito sudo chmod -R 777 /usr/bin, pero solo después de iniciar sesión en la rootcuenta.
iHowell

Respuestas:


10

A pesar del estado aceptado, ahora estoy convencido de que esta respuesta es incorrecta . (Espero mejorarlo pronto, después de consultar con el OP sobre la aceptación). Creo recordar que otros dijeron que esto funcionó, pero creo que sus problemas fueron al menos ligeramente diferentes. El método descrito aquí sigue siendo valioso para algunas situaciones en las que chmod -R 777 /usr/binse interrumpe con Ctrl+ Co de lo contrario no se completa. Pero una vez que lo hace, tampoco pkexecestá configurado y no funcionará mejor quesudo , como Damien Roche y Oli han comentado correctamente.

En un sistema de escritorio de Ubuntu, PolicyKit se instala, por lo que pkexecse puede utilizar para reparar una fractura sudoejecutable o sudoersarchivo . No necesita iniciar en modo de recuperación y no necesita iniciar desde un CD en vivo. Ni siquiera necesita reiniciar.

En este caso, ejecute los siguientes comandos:

pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo

Vea esta pregunta para más información.


99
pkexec must be setuid root! ¡Qué pesadilla!
Damien Roche el

1
Como Damien señala, el problema con este enfoque es pkexecexactamente la misma situación que sudo. Normalmente es setuid y vive adentro /usr/bin. Lo he probado y esto simplemente no funciona después chmod -R 777 /usr/bin.
Oli

@DamienRoche, Oli: Lo siento por no fijar esta manera antes! Los dos tienen razón. No estoy seguro de por qué pkexectiene que ser setuid root para que funcione (¿no funciona a través del demonio polkit como otros procesos no setuid?), Pero lo necesita. He comentado la pregunta para ver si el OP (que aceptó esto) puede arrojar luz sobre lo que, si es que hay algo, es correcto o útil sobre esta respuesta. Y agregué un banner temporal en la parte superior de esta publicación para no engañar más. Si esta respuesta continúa existiendo, su forma mejorada probablemente incorporará alguna información actualmente en ese banner.
Eliah Kagan el

Simplemente podría usar su, que se encuentra debajo de / bin
FliiFe

@FliiFe La fijación de los permisos (o propiedad) de los archivos /usr/binrequiere privilegios de root, pero no puede rootear suen la mayoría de los sistemas Ubuntu porque los inicios de sesión root están deshabilitados de forma predeterminada. A diferencia de sudoy pkexec, cuando utiliza suun shell de root o ejecuta un comando como root, debe proporcionar la contraseña de root, no la suya. Pero root no tiene contraseña por defecto en Ubuntu (lo que quiere decir que la autenticación basada en contraseña para root siempre fallará, no que ingresar una contraseña en blanco funcionaría). Ver RootSudo para más detalles.
Eliah Kagan

4

Incluso cuando se ejecuta desde el CD / Pendrive en vivo, debe anteponer su chmodcomando con sudo. Entonces sus pasos serán los siguientes:

  1. arranque desde un CD / Pendrive en vivo
  2. compruebe si su disco ya estaba montado automáticamente (y dónde). Si no, móntelo (ver abajo)
  3. utilizar sudo chmod 0755 <path>para ajustar los permisos

Cómo averiguar dónde está montado su disco: desde una ventana de terminal, ejecute mount(sin argumentos). Esto enumerará todos los dispositivos montados. Verifique lo que typeaparece en la lista: puede omitir todo lo que no esté utilizando un "sistema de archivos real" (su disco probablemente usa ext3 o ext4; puede saltear cosas como proc, sysfs y similares). Si algo suena prometedor (parece /dev/sda1 on /media/sda1 type ext3), verifique su contenido usando ls /media/sda1para ver si es eso.

Si no se monta, se puede comprobar con las /deventradas en las que el disco podría ser (utilizando ls /dev/ |grep '/dev/sdpara comprobar si hay dispositivos disponibles; el disco debe ser similar /dev/sdaX, /dev/sdbXo similar -, siendo X un número). Compare esto con la lista de dispositivos montados. Si no está allí, intente montarlo y verifique su contenido (como se muestra arriba). Para montarlo, primero cree un punto de montaje, por ejemplo sudo mkdir /mnt/mydisk, luego intente montar el dispositivo usando mount /dev/sda1 /mnt/mydisky verifique su contenido usando ls /mnt/mydisk.

Una vez que el disco allí, se puede ir a cambiar los permisos de vuelta en su directorio usr: sudo chmod 0755 /mnt/mydisk/usr.

Ahora todavía podría estar en problemas si originalmente ejecutó el chmodcomando de forma recursiva, utilizando el -Rparámetro. En ese caso, puede intentar arreglar cada entrada manualmente, o puede ir directamente a una nueva instalación ...


Intenté crear el punto de montaje, pero me dio un error que decía punto de montaje mnt / myDisk no existe es myDisk que ser sustituido por algo y para que conste que he escrito mount /dev/sda /mnt/mydiskdesderoot@Ubuntu:/dev#
vin

¿Te ha a) crear ese punto (directorio) antes de emitir el comando mount (como se describe montaje) yb) se hizo cargo para el que conduce barra así? Inténtalo mkdir -p /mnt/mydisk && mount /dev/sda1 /mnt/mydisk(no creo que tengas particiones /dev/sda, así que debes haber perdido también el número de partición. Asegúrate de especificar el dispositivo correcto (o el montaje fallará).
Izzy

1

Creo que Mat está en lo correcto, debes ser root para agregar el bit a / usr / bin, pero por supuesto sudo está roto. Si tiene una contraseña de root, puede usarla para iniciar sesión como root y luego corregir los permisos con el comando anterior. Sin embargo, si no lo hace (y yo tampoco), probablemente sería mejor:

  • arrancar desde un CD en vivo de Linux
  • convertirse en raíz allí
  • montar la partición con el sistema anterior
  • luego enderezar los permisos en ese sistema de archivos utilizando un terminal.

Root siempre es el número de usuario 0, por lo que root en cualquier sistema puede realizar cambios permitidos en otros sistemas de archivos.


1

No tengo mucho conocimiento Pero estos pasos resolvieron mi problema incluso sin reiniciar mi máquina. Sigue estos pasos:

su root
<enter root password>
cd /usr
chmod -R 755 *

1
Le falta al menos un comando "cd". Si lo hace así, está haciendo el "chmod" en el directorio de inicio para root. Eso empeorará las cosas.
Rinzwind

gracias ... edité mi respuesta ... estaba en la carpeta / usr
Manu Mohan Thekkedath

2
Esto solo funciona si se establece una contraseña root, que no es la configuración predeterminada de Ubuntu.
David Foerster

1

En un intento de establecer permisos para mis scripts locales, rompí el permiso de sudo y cambié de propietario, por error. Pude volver a cambiar la propiedad de sudo a root haciendo lo siguiente:

Paso 1: cambia al modo de recuperación de ubuntu . Si no conoce el proceso, puede consultar una respuesta aquí: /ubuntu//a/172346/223901

Paso 2: una vez en el modo de recuperación, seleccione root - Soltar al indicador de shell de root

Paso 3: haz los siguientes comandos

mount -o remount,rw /
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
reboot

Espere a que su sistema arranque normalmente y verá la propiedad de sudo de nuevo a la raíz.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.