¿Cómo recuperar sudo en Ubuntu?

12

He hecho esto:

sudo chown -R myname /usr/

y ahora no puedo usar el sudocomando debido a este error:

sudo: debe ser raíz setuid

Y mientras leo esto significa que el propietario de este archivo /usr/bin/sudono es la raíz. Ahora es mi usuario debido al chown en la /usrcarpeta.

En muchos foros y blogs la gente sugiere hacer esto como root:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

... pero el problema con esto es que necesito iniciar sesión como root, pero no puedo porque si escribo suen el terminal la contraseña es incorrecta (en realidad uso la contraseña que agregué a mi usuario):

$ su
Password:
su: Authentication failure

Entonces, ¿puedo recuperar el sudocomando?

Editar: Mi Ubuntu está bajo Paralells en mi Mac OS X.

Adán
fuente
¿Qué quiere decir con "uso la contraseña que agregué a mi usuario"? Cuando lo use su, se le pedirá la contraseña de root , no la contraseña de su usuario como con sudo. ¿Conoces la contraseña de root para esta máquina?
Caleb
No, nunca necesité agregarlo o modificarlo, ¿hay algún valor predeterminado?
Adam
Debe reiniciar en modo de usuario único. ¿Qué distribución estás ejecutando?
Gilles 'SO- deja de ser malvado'
1
Simplemente curioso, pero ¿qué te hizo decidir ejecutar un sudo chmod -R cirk:cirk /usr¿Qué estabas tratando de lograr?
loosecannon
1
Un programa que se instaló en algún lugar en / usr / ya que no sabía la ubicación exacta del programa, decidí usar chown en toda la carpeta usr, y como soy un novato, lo arruiné todo de nuevo: P
Adam

Respuestas:

5

Si tiene un sistema similar que puede usar como guía para ver cuál es la propiedad correcta de todos los archivos, puede iniciar en modo de rescate, soltar a un shell raíz y restaurar manualmente la propiedad correcta a todos los archivos. archivos en /usr.

La forma más rápida puede ser reinstalar su sistema operativo o restaurar desde la copia de seguridad.

En Ubuntu o similar, entonces no hay una contraseña de root por defecto (la cuenta está deshabilitada), por lo que no puede su.

psusi
fuente
8
Ah, tómalo con calma, no se trata de reinstalar Windows, no siempre es la forma más fácil o más rápida de hacer nada y, desde luego, no enseña a las personas cómo solucionar problemas. En este caso, todo lo que necesita hacer es revertir la acción que tomó, que puede hacerse fácilmente montando el sistema de archivos en otro entorno como un LiveCD o el modo de rescate que sugirió (depende de la distribución).
Caleb
@Caleb cuando elimina completamente los permisos en una parte importante del sistema de archivos que es. No solo arruinó sudo, presumiblemente olvidó mencionar en su publicación que usó -R (de lo contrario, solo habría cambiado el propietario del directorio / usr y no sudo). También describí cómo revertir el proceso, pero es una tarea muy lenta y laboriosa.
psusi
1
Este es un caso de chownno chmod. Dado que todo en la /usrcarpeta debería estarlo root:root, esta debería ser una solución fácil, no la solución minuciosa que chmodsignificaría un clobber.
Caleb
2
@Caleb no todo en / usr debe ser root: root.
psusi
66
@Caleb chownrestablece los bits setxid. Hay algunos archivos /usrque no son propiedad de la raíz; más que están en un grupo diferente (especialmente en los programas setgid /usr/bin).
Gilles 'SO- deja de ser malvado'
11

Dado que ha retenido los permisos en lo único que le brinda acceso a nivel raíz, necesitará ayuda de FUERA del entorno de software actual para solucionar esto.

Sugiero que la forma más fácil es iniciar un LiveCD para su distribución, montar su unidad y cambiar los permisos de archivo usando los chmodque enumeró desde allí.

También puede intentar arrancar en modo de usuario único para obtener un shell raíz.

Tenga en cuenta que, por lo general, todas las cosas en el /usr/directorio deben ser propiedad, rootpor lo que debería poder hacer un recursivo chownpara arreglar lo que rompió. ( Editar: según los comentarios de @Gilles aparentemente ejecutando cortes chownsetuid y setgid bits, por lo que deberá compararlos manualmente con un sistema existente para restaurarlos una vez que arregle la propiedad nuevamente).

Sin embargo, muy POCOS deberían ser 4111. Ese extra es un permiso especial, ¡pero eso hace que se ejecute como root incluso cuando se ejecuta como usuario! Solo sudoy unos pocos comandos seleccionados deben tener este bit de permiso establecido. Si no ejecutó un chmodpara comenzar, probablemente no necesite arreglar esto en absoluto , todos los permisos ya deberían ser correctos. No ejecute una chmodoperación grande sin saber cuáles deben ser todos los permisos.

Caleb
fuente
¿Es posible si el sistema operativo está en una máquina virtual?
Adam
Sí, eso no hace la diferencia. Puede usar el nivel de ejecución 1 (algo que puede hacer al comienzo del proceso de arranque desde grub / lilo o lo que sea que sea su gestor de arranque) o puede configurar la VM para usar una imagen ISO del LiveCD como dispositivo de arranque.
Caleb
aham, mucho antes de reinstalarlo, intentaré tu consejo :)
Adam
ok Creo que estoy en el LiveCD, ¿ahora necesito escribir esto en la terminal? sudo chown -R root /usr/?
Adam
Comience con eso, pero no en /usrel LivdCD, necesita montarlo en algún lugar y correr contra ese camino, digamos /mnt/mydrive/usr. Entonces necesitará arreglar el bit setuid /mnt/mydrive/usr/bin/sudo. Luego mire a través de / usr en el livecd y vea si hay otras propiedades que no sean root. find /usr -not -uid 0y cambiarlos para que coincidan. Luego busque cosas que tengan diferentes setuid o setgid bits y asegúrese de que coincidan también. Si tiene un sistema Ubunutu real para comparar, sería mejor.
Caleb
4

En el modo de recuperación de Ubuntu, ingrese los siguientes comandos ... Esto solucionó el problema para mí ...

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

Espero que esto solucione su problema (o el de otra persona)

Encontré este aquí en esta publicación de blog .

Usuario de Ubuntu
fuente
2

Esto es mucho más fácil que lo sugerido por otras respuestas. No es necesario formatear, reiniciar o usar Live CD.

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

Esta es la forma más fácil de solucionar este problema. Explicación, sudo está dañado (sé que corrupto es el término incorrecto, pero no funciona, por lo tanto, debemos evitar usar sudo)

  • Usando el comando 1 (su root) , cambiamos el usuario a root sin usar sudo.
  • Usando el comando 2 (raíz conocida: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo) , arreglamos los permisos / propiedad de sudo.
  • Usando el comando 3 (salir) , volvemos al usuario original.

He probado este método en Linux mint. Que es un sistema similar a ubuntu. Déjame saber que este método no funciona en ningún otro sistema operativo. Actualizará la respuesta en consecuencia.

Gracias

divyenduz
fuente
Según tengo entendido, por defecto la cuenta raíz no tiene contraseña, por lo que es imposible proporcionar una contraseña en el primer paso su root, y debido a sudoque no funciona, es imposible establecer una contraseña raíz
TitanFighter
1
Gracias me ayudó.
Arun
1

Esto es más simple de lo que la gente lo está haciendo. Intenta lo siguiente:

  1. En lugar de intentar iniciar sesión como root utilizando el sucomando roto , cierre la sesión como su usuario actual e inicie sesión nuevamente como root a través de su Display Manager normal (es decir, la pantalla de inicio de sesión).
  2. Ejecute lo siguiente en la terminal: chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

Esto debería solucionar el sudocomando y tenerlo en funcionamiento nuevamente en poco tiempo.

usuario7089
fuente
0

Para iniciar sesión como root, sin su o sudo, puede usar pkexec:

pkexec su

Ahora cambie los permisos de los archivos:

chmod 440 /etc/sudoers
chmod 775 /etc/sudoers.d
chmod 440 /etc/sudoers.d/README
Jagmeet Singh Bains
fuente