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

Ejecuté un 'chown' en todo lo que estaba debajo de /usr para un usuario que no era root. Pretendía ejecutarlo para /usr/local/ Ahora aparece el siguiente error al abrir la 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]
También se preguntó en unix.stackexchange.com/q/91899/4667

Respuestas (2)

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

En mi instalación, todos los archivos de abajo /usr/local/eran propiedad de root o míos, algunos archivos de abajo /usr/eran propiedad de _uucpy todos los demás archivos de abajo /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 los propietarios de algunos archivos.

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.

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

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.

Tengo muchos archivos debajo /usr/!(local)/que no se incluyeron con OS X: por ejemplo, archivos agregados por el paquete de herramientas de línea de comandos, archivos agregados por los instaladores para MacTeX, Java y Haskell, y algunos archivos binarios que fueron agregados /usr/binpor sudo /usr/bin/gem install.
Hay una razón por la que a menudo se sugiere que no debe agregar archivos en /usr/!(local)/Apple, debe dejar que administre esa área.
A) Es por eso que no debe instalar cosas en /usr/ excepto /usr/local/ y B) Reparar permisos sigue siendo su mejor opción para que su sistema vuelva a funcionar.