Accidentalmente corrí
sudo chmod 755 -R /
en lugar de
sudo chmod 755 -R ./
Lo detuve después de unos segundos, pero ahora hay algunos problemas como
sudo: must be setuid root
¿Cómo puedo revertir los permisos?
permissions
sudo
chmod
fl00r
fuente
fuente
sudo
significa que has pensado dos veces lo que harás!Upgrade from Ubuntu 11.04 to Ubuntu 11.04
. Acepte esta opción y volverá a instalar Ubuntu de manera efectiva, de la manera más sencilla./
al final del nombre del directorio para especificar el directorio como destino. Es un mal hábito , ¡no lo hagas, nunca ! El.
nombre de directorio es válido por sí mismo, no es necesario agregarlo/
. Si todos siguieran esta regla, muchassudo
operaciones mal escritas no tendrían ningún efecto en el directorio raíz, por lo que no se habría hecho daño a sus sistemas. ¡No lo hagas!cd .
Por ejemplo, no hace nada.ls .
es el mismo quels
. Además,..
es un nombre de directorio que significa "el padre de.
", y probablemente ya lo sabía./
al final. Si desea hacer una expansión de nombre de ruta solo para directorios. Ejemplo de listado de directorios dentro del directorio actual:echo */
Respuestas:
En resumen: no puede, reinstale su sistema.
Quiero decir, los permisos de Posix se usan y se utilizan en gran medida; Hay una multitud de lugares en el sistema de archivos donde los permisos incorrectos romperían el sistema operativo (indicadores SUID) o, lo que es peor, lo expondrán en términos de seguridad (
/etc/ssh/ssh_host_rsa_key
) mientras parece estar funcionando bien.Por lo tanto, tal recuperación es difícil de hacer correctamente. Echo de menos una cosa y la arruinas. Usted ya cagado su
sudo chmod
comando (si ese es su amigo en lugar de usted, bien podría aprender alguna lección de Linux, también) - y eso es un muy simple de un comando. La recuperación adecuada exigiría más órdenes y más vigilancia. Incluso si usas el guión de alguien.Así que confía en mí, solo reinstala. Es una apuesta segura y garantizada para evitar problemas.
Finalmente, algunos consejos relevantes aquí.
Primero: las reinstalaciones serán menos dolorosas si configura la suya
/home
en una partición separada la próxima vez. En realidad, serán una brisa.Segundo: considere hacer ciencia loca de Linux en una máquina virtual como VirtualBox, y haga sus instantáneas.
Tercero:
chmod -R .
obras. Un punto en sí mismo.
es un nombre de directorio válido. No hay necesidad real de agregar esa barra. Podrías haber evitado el riesgo catastrófico de saltear el punto por completo;simplemente
chmod: missing operand after ‘755’
VS un sistema en ruinas.fuente
sudo
significa que tienes que verificar dos veces.Escribí y he estado usando durante varios años un par de scripts de Ruby para
rsync
permisos y propiedad. La secuencia de comandosget-filesystem-acl
recopila toda la información atravesando recursivamente todos los archivos y los coloca en el archivo.acl
. El script.acl-restore
leerá.acl
y aplicará todos loschown
'sychmod
' s.Puede ejecutar
get-filesystem-acl
una instalación similar de Ubuntu y luego copiar el.acl
archivo a su caja dañada por chmod, colocar.acl
y.acl-restore
/ y ejecutar.acl-restore
.Necesitarás tener root, así que arregla tu
sudo
como Marco Ceppi sugirió.Puedo generar y darte el
.acl
archivo de mi Ubuntu.get-filesystem-acl
.acl-restore
fuente
owner_id
está definidofind SOME_DIR -depth -printf 'chmod %m %p\n' > saved_permission
En mucho tiempo: puedes. Deberá montar el sistema de archivos desde un Live CD y comenzar a revertir los permisos en los lugares apropiados. Como mínimo para recuperar sudo, querrá ejecutar
sudo chmod u+s /usr/bin/sudo
mientras está en la sesión de LiveCD, eso solucionará la raíz que debe configurarse.Sin embargo, probablemente sería más fácil simplemente reinstalar el sistema.
fuente
Intentaría reinstalar todos los paquetes con
apt-get install --reinstall
, posiblemente usando la salida dedpkg --get-selections | grep install
para obtener una lista de ellos.fuente
sudo apt-get autoremove
?autoremove
solo elimina los paquetes que no ha instalado manualmente.apt-mark auto $pkg
/apt-mark manual $pkg
que le permiten modificar el estado de "paquete instalado / autoinstalado manualmente".Bien, no he probado esto (así que úselo bajo su propio riesgo), pero aún podría funcionar. Probaré esto en una máquina virtual cuando tenga la oportunidad de:
Primero, en un sistema que todavía funciona, hice lo siguiente para obtener todos los permisos de archivo en una lista, omitiendo el
/home/
directorio:Esto imprimirá los permisos y el nombre de archivo para cada archivo o directorio en el sistema, seguido de un
\0
carácter (esto se necesita más adelante para tratar con nombres de archivo extraños como los que contienen líneas nuevas).Luego, en un sistema donde los permisos de archivo se han visto comprometidos:
Esto leerá cada línea de
fileper.log
, guardando los permisos como$perm
y el nombre del archivo como$file
y luego establecerá los permisos del archivo (o directorio) a lo que esté listado en elfileper.log
Algunas cosas a tener en cuenta aquí:
/tmp/fileper.log
es posible que esté enumerando configuraciones personalizadas y procesos, etc.Lo que sugeriría es que inicie un LiveCD con la versión de Linux que tiene en su disco, ejecute el comando, modifique la ruta donde tiene montado el disco local y ejecute el segundo comando.
He probado que cuando se inicia desde un CD / USB de Ubuntu, puedo elegir no formatear el disco, lo que significa que reemplazará todo en el
/
directorio, PERO omitir el/home/
directorio. Lo que significa que sus usuarios tendrán la configuración de aplicaciones / DATOS (Música, Video, Documentos) aún intacta. Y al reemplazar los archivos del sistema,chmod
se establece el número adecuado.fuente
chmod $(echo $LINE)
lugar de solochmod $LINE
? Además, se puede usar simplementefind
sinstat
:find … -printf "%#m %p\n"
. Mejor aún, puede crear el comando completo:find … -printf "chmod %#m %p\n"
y luego ejecutar el archivo como un script.michael@NEXUS-TWO:~$ sudo find / -name '*' -exec stat -c "%a %n" {} \; >> /tmp/fileper.log
pero también se ejecuta/proc
y algunos otros lugares que quizás no desee en su lista.(Sé que no debería comentar en una respuesta, pero no tengo suficiente reputación para comentar).
La respuesta de blade19899 funcionó para mí, excepto para los enlaces simbólicos. Por ejemplo, aplicó 755 a / bin / bash, pero luego aplicó 777 al enlace simbólico / bin / rbash, efectivamente 777-ing / bin / bash.
Como ya tenía el archivo fileper.log, simplemente modifiqué el comando end-end:
fuente
chmod
.... effectively 777-ing /bin/bash
- no; Así no es cómo funciona. ¿Estás diciendo que puedo reemplazarlo/usr/bin/apt
con mi propio usuario como usuario no root , simplemente escribiéndolo a través de un enlace simbólico 777? :) Ejercita algo de pensamiento crítico; los enlaces simbólicos no pueden y no funcionan de esa manera. Los permisos 777 para enlaces simbólicos son comunes y normales.Puede intentar restaurar los permisos con
apt-get
.Si no puede ejecutar estos comandos con sudo, es posible que deba iniciar el modo de recuperación y ejecutarlos como root.
Para iniciar el modo de recuperación, consulte https://wiki.ubuntu.com/RecoveryMode .
De http://hyperlogos.org/page/Restoring-Permissions-Debian-System
Nota: Esto se publicó originalmente en los foros de Ubuntu pero no puedo encontrar la publicación original.
Intenta, en orden,
Si eso falla:
Y finalmente, como último recurso,
Usando apt-get
Aquí está el recorte relevante, EDITADO PARA CORRECCIÓN y reformateado:
fuente
Tuve el mismo problema, puedo solucionarlo. En mi caso Ubuntu 19.10
Abra su terminal y escriba debajo del código simple
abra otra terminal y verifique debajo del comando.
fuente