¿Cómo recuperarse de "chown -R $ USER / usr /"?

2

Ejecuté un 'chown' en todo bajo / usr a un usuario no root. Pretendía ejecutarlo para / usr / local / Ahora aparece el siguiente error al abrir el terminal

login(89809,0x7fff7bac5960) malloc: *** error for object 0x7fc7cb500b40: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

[Process completed]
Pete_ch
fuente
Posible duplicado de how-can-i-reset-my-terminal ?
sameetandpotatoes
También preguntado en unix.stackexchange.com/q/91899/4667
glenn jackman

Respuestas:

4

Si no puede restaurar /usr/desde una copia de seguridad, primero puede iniciar en modo de usuario único (manteniendo presionado el comando-S al inicio) y ejecutar chown -R root /usr/.

En mi instalación, todos los archivos bajo /usr/local/eran propiedad de root o yo, unos archivos bajo /usr/eran propiedad de _uucpy todos los demás archivos bajo /usr/eran propiedad de root:

$ sudo find /usr/local ! -user root ! -user $USER
$ sudo find /usr/!(local) ! -user root -print0|xargs -0 stat -f '%Su %N'
_uucp /usr/bin/cu
_uucp /usr/bin/uucp
_uucp /usr/bin/uuname
_uucp /usr/bin/uustat
_uucp /usr/bin/uux
_uucp /usr/sbin/uucico
_uucp /usr/sbin/uuxqt
_uucp /usr/share/uucp

Esto cambiaría el propietario de los uucparchivos:

sudo chown _uucp /usr/bin/{cu,uucp,uuname,uustat,uux} /usr/sbin/{uucico,uuxqt} /usr/share/uucp

/usr/local/no existe en una instalación nueva de OS X. Si solo usó /usr/local/con Homebrew, puede eliminar /usr/local/y luego reinstalar Homebrew.

Alternativamente, puede usar Pacifist para copiar el valor predeterminado /usr/de un instalador de OS X descargado de App Store. Hacer una instalación de actualización de OS X desde la partición de recuperación o actualizar a 10.9 también podría restaurar a los propietarios de algunos archivos.

Lri
fuente
La solución de modo de usuario único funcionó. Pero antes de ejecutar chown, tuve que ejecutar mount -uw / para permitir la modificación del sistema de archivos de solo lectura
Pete_ch
2

Creo que este es un caso en el que los permisos de reparación realmente hacen algo útil. Restaurará los permisos correctos a todos los archivos proporcionados por Apple, que creo que son todos menos aquellos en / usr / local. Ese directorio contiene cosas que agregó y, por lo tanto, debería poder recrearlas.

Para reparar permisos, use Disk Utility.app y seleccione el disco de arranque en la lista de discos de la izquierda. Habrá botones para verificar o reparar permisos de disco.

marca
fuente
Tengo muchos archivos /usr/!(local)/que no se incluyeron con OS X: por ejemplo, archivos que fueron agregados por el paquete Command Line Tools, archivos agregados por los instaladores para MacTeX, Java y Haskell, y algunos binarios /usr/binque fueron agregados por sudo /usr/bin/gem install.
Lri
Hay una razón por la que a menudo se sugiere que no se deben agregar archivos en /usr/!(local)/Apple para administrar esa área
Mark
A) Es por eso que no debe instalar cosas en / usr / except / usr / local / y B) Los permisos de reparación siguen siendo su mejor opción para que su sistema vuelva a funcionar.
TJ Luoma