Cómo averiguar qué está causando que la propiedad de / usr / local cambie de mi nombre de usuario a root

13

Lo uso homebrewcomo administrador de paquetes para ciertas aplicaciones de desarrollo web. Para mantenerme brewactualizado, corro update brewcada dos días y también corro brew doctor. Por lo general, esto está bien y brewme dice que estoy listo para preparar cerveza.

Sin embargo, de vez en cuando, aparece el siguiente error:

Advertencia: / usr / local / etc no se puede escribir.

Esto puede suceder si "sudo make install" software que no es administrado por Homebrew. Si una fórmula intenta escribir un archivo en este directorio, la instalación fallará durante el paso del enlace.

Probablemente deberías chown/ usr / local / etc

Advertencia: el directorio / usr / local no se puede escribir. Incluso si este directorio se podía escribir cuando instaló Homebrew, otro software puede cambiar los permisos en este directorio. Se sabe que algunas versiones del componente "InstantOn" de Airfoil hacen esto.

Probablemente debería cambiar la propiedad y los permisos de / usr / local a su cuenta de usuario.

Es bastante fácil restablecer los permisos a mi nombre de usuario. Luego brewparece estar bien.

Pero, ¿qué está causando que esto suceda?

¿Hay un registro que muestre qué está causando el cambio de los permisos?

Daniel Muller
fuente
3
No hay registro, pero tenga en cuenta que tener / usr / local propiedad de rood es el estándar de Unix, por lo que cualquier compilación allí lo esperará. La solución es no mezclar un directorio con el administrador de paquetes (Homebrew) y la compilación estándar de Unix: use otro directorio para uno de ellos
usuario151019,
3
Agregar software a la misma ubicación que usa un administrador de paquetes es una mala idea, y también lo es cambiar la propiedad y los permisos /usr/local. Pero si insiste, podría make installhacerlo sin usar los sudopaquetes que usted mismo instala.
fd0
1
La actualización de OS X generalmente restablece la propiedad / permisos / usr / local.
mspasov
1
@Otros ah, leí la cita de Homebrew en lugar de la pregunta
user151019
1
¿Qué más instaló (manualmente o mediante cualquier otro administrador de paquetes) en su Mac que se configuró para la instalación predeterminada /usr/local?
dan

Respuestas:

13

Tuve exactamente el mismo problema, y ​​resulta que la actualización automática de Sophos fue la culpable. Me di cuenta de esto ejecutando:sudo fs_usage | grep "usr/local"

Me tomó un tiempo, pero finalmente vi que el demonio de "Instalación" de Sophos se metía con los permisos de / usr / local.

Todavía estoy tratando de encontrar una solución adecuada para este comportamiento.

EDITAR: Creo que Sophos ha solucionado este problema, vea el enlace en los comentarios de esta respuesta. ¡Parece estar arreglado para mí al menos!

Otros
fuente
44
Aquí hay una discusión: community.sophos.com/products/free-antivirus-tools-for-desktops/... Esto debería solucionarse en noviembre de 2015
JoeZuntz
@JoeZuntz ¡Buen hallazgo! Impresionante que realmente estén presionando una solución.
Otros
@otros gracias por esta información. Pude arreglar todo después de actualizar a 10.11.1 y conseguí que Homebrew volviera a funcionar, pero la mayoría de las veces, cada vez que iba a hacer una actualización, los permisos habían cambiado nuevamente. Me estaba molestando qué software seguía cambiando los permisos en / usr / local.
Tim X
@TimX Sí, apesta ... Afortunadamente parece que Sophos lo está reparando a fines de la próxima semana, 20 de noviembre.
Otros
4

Resulta que Filewave es el culpable. Filewave es un software de administración del sistema utilizado por nuestra escuela para impulsar actualizaciones de software. Gracias por el aporte.

Daniel Muller
fuente
2

Solo tengo una idea aproximada de cómo obtener el ladrón de permisos. Esta no es una solución a su problema, sino más bien una solución alternativa.

¿Qué hay de escribir un perro guardián en Automator o con Hazel (acciones de carpeta) para ver esta carpeta en particular, pero en lugar de agregar una función como Escalar imágenes, solo usa un shellscript que ejecuta varios comandos de shell:

  • Si la carpeta se cambia de alguna manera, solo tome una instantánea de los permisos y la identificación del proceso que está accediendo actualmente fuser <foldername>.
  • luego buscas en la tabla de proceso el id del proceso ( ps auxwwwwww | grep <process id>) y finalmente
  • escríbete un correo electrónico con esta información recopilada.

Desafortunadamente no soy un Automator sadhu, pero descubrí por Google que hay muchas soluciones para un problema tan similar.

Garex
fuente
0

Si usa Time Machine, puede encontrar el tiempo aproximado cuando los permisos cambiaron explorando Backups.backupdben la Terminal. Usar ls -lden las carpetas con marca de tiempo, p. Ej.

ls -ld /Volumes/Backup/Backups.backupdb/Mac/2015-12-25-120000/Macintosh\ HD/usr/local 

Que mostrará información del propietario y del grupo.

Una vez que tenga la fecha en que ocurrió el cambio, puede detectar qué más podría haber cambiado en su sistema. Una técnica simple es utilizar el Archivo del buscador ›Buscar y agregar un Last modified datecriterio. Otras buenas herramientas son findy mdfinden Terminal.

duozmo
fuente
-1

Este es un efecto secundario de actualizar su sistema; OS X probablemente realiza algunas "reparaciones" de permisos generales durante el proceso de actualización, ya que / usr / local está anidado en una carpeta propiedad de la raíz.

Stan Hutcheon
fuente
AFAICT, actualizarme a El Capitán es lo que me causó el problema
Giuseppe
-3

¿Ha utilizado Disk Utilityselect Macintosh HDluego run Verify Disk Permissiony luego Repair Disk Permissionsi es necesario, en lugar de hacerlo manualmente?

Ahora, esto no debería solucionar su problema, pero es un buen punto de partida 'conocido' para ver cuándo la preparación casera cambia los permisos. Podría mostrar el problema subyacente si tienes suerte.

También new update -vpara obtener resultados más detallados, además de registros antiguos están aquí ~/Library/Logs/Homebrewsegún ¿Dónde se registra homebrew?

MichaelStoner
fuente
2
Disk Utilityno verificaría ni repararía los permisos /usr/localya que este directorio no existe en una nueva instalación de Yosemite.
dan
Verifiqué esta hipótesis completamente en Yosemite creando una nueva /usr/localque me pertenece y ejecutándome DU. No hay ninguno /usr/localdentro del DUregistro. Y /usr/localaún me pertenece.
dan