Comment comprendre ce qui fait que la propriété de / usr / local passe de mon-nom d'utilisateur à root

13

J'utilise homebrewcomme gestionnaire de packages pour certaines applications de développement Web. Pour rester brewà jour, je cours update brewtous les deux jours et je cours également brew doctor. Habituellement, c'est très bien et brewme dit que je suis prêt à brasser.

De temps en temps, cependant, j'obtiens l'erreur suivante:

Avertissement: / usr / local / etc n'est pas accessible en écriture.

Cela peut se produire si vous "sudo make install" un logiciel qui n'est pas géré par Homebrew. Si une formule tente d'écrire un fichier dans ce répertoire, l'installation échouera pendant l'étape de liaison.

Vous devriez probablement chown/ usr / local / etc

Avertissement: le répertoire / usr / local n'est pas accessible en écriture. Même si ce répertoire était accessible en écriture lorsque vous avez installé Homebrew, d'autres logiciels peuvent modifier les autorisations sur ce répertoire. Certaines versions du composant "InstantOn" d'Airfoil sont connues pour ce faire.

Vous devriez probablement changer la propriété et les autorisations de / usr / local sur votre compte d'utilisateur.

Il est assez facile de réinitialiser les autorisations sur mon nom d'utilisateur. Ensuite, brewça va bien.

Mais qu'est-ce qui fait que cela arrive?

Existe-t-il un journal qui indique ce qui provoque la modification des autorisations?

Daniel Muller
la source
3
Pas de journal mais notez que le fait d'avoir / usr / local détenu par rood est la norme Unix et donc tout build s'y attendra. La solution est de ne pas mélanger un répertoire avec à la fois le gestionnaire de paquets (Homebrew) et la compilation Unix standard - Utilisez un autre répertoire pour l'un d'eux
user151019
3
Ajouter un logiciel au même emplacement que celui utilisé par un gestionnaire de packages est une mauvaise idée, tout comme la modification de la propriété et des autorisations /usr/local. Mais si vous insistez, vous pouvez make installsans utiliser sudode packages que vous installez vous-même.
fd0
1
La mise à niveau d'OS X réinitialise généralement la propriété et les autorisations / usr / local.
mspasov
1
@Autres ah j'ai lu la citation de Homebrew plutôt que la question
user151019
1
Qu'avez-vous installé d'autre (manuellement ou via un autre gestionnaire de packages) sur votre Mac qui a été configuré pour une installation par défaut dans /usr/local?
dan

Réponses:

13

J'ai eu exactement le même problème, et il se trouve que la mise à jour automatique de Sophos était à blâmer. J'ai compris cela en exécutant:sudo fs_usage | grep "usr/local"

Cela a pris un certain temps, mais j'ai finalement vu le démon "Installation" de Sophos qui jouait avec les autorisations de / usr / local.

J'essaie toujours de trouver un moyen de contourner ce problème.

EDIT: Je crois que Sophos a résolu ce problème, voir le lien dans les commentaires de cette réponse. Il semble au moins être corrigé pour moi!

Autres
la source
4
Il y a une discussion ici: community.sophos.com/products/free-antivirus-tools-for-desktops/… Cela devrait être corrigé en novembre 2015
JoeZuntz
@JoeZuntz Nice find! Génial qu'ils poussent réellement un correctif.
Autres
@autres merci pour cette info. J'ai pu tout réparer après la mise à niveau vers la version 10.11.1 et j'ai fait fonctionner à nouveau les homebrews, mais le plus souvent, à chaque fois que je suis allé faire une mise à niveau de la bière, les autorisations avaient à nouveau changé. Cela me dérangeait sur les logiciels qui continuaient de changer les perms sur / usr / local.
Tim X
@TimX Oui, ça craint un peu ... Heureusement, il semble que Sophos le corrige à la fin de la semaine prochaine, le 20 novembre.
Autres
4

Il s'avère que Filewave est le coupable. Filewave est un logiciel de gestion de système utilisé par notre école pour pousser les mises à jour logicielles. Merci pour la contribution.

Daniel Muller
la source
2

J'ai juste une idée approximative de comment obtenir le voleur de permission. Ce n'est pas une solution à votre problème, mais plutôt une sorte de solution de contournement.

Que diriez-vous d'écrire un chien de garde dans Automator ou avec Hazel (actions de dossier) pour regarder ce dossier particulier, mais au lieu d'ajouter une fonction comme Scale images, vous utilisez simplement un script shell qui exécute plusieurs commandes shell:

  • Si le dossier est modifié de quelque façon que ce soit, il vous suffit de prendre un instantané des autorisations et de l'ID de processus en cours d'accès avec fuser <foldername>.
  • puis vous recherchez dans la table de processus l'id de processus ( ps auxwwwwww | grep <process id>) et enfin
  • écrivez-vous un e-mail avec ces informations collectées.

Malheureusement, je ne suis pas un sadhu Automator, mais j'ai découvert par Google qu'il existe de nombreuses solutions pour un problème aussi similaire.

Garex
la source
0

Si vous utilisez Time Machine, vous pouvez trouver l'heure approximative à laquelle les autorisations ont changé en explorant Backups.backupdbdans Terminal. Utilisation ls -lddans les dossiers horodatés, par exemple

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

Qui affichera les informations sur le propriétaire et le groupe.

Une fois que vous avez la date à laquelle le changement s'est produit, vous pouvez rechercher ce qui aurait pu changer ensuite sur votre système. Une technique simple consiste à utiliser le fichier du Finder ›Rechercher et ajouter un Last modified datecritère. D'autres bons outils sont findet mdfinddans Terminal.

duozmo
la source
-1

Il s'agit d'un effet secondaire de la mise à jour de votre système; OS X effectue probablement des "réparations" d'autorisations générales au cours du processus de mise à jour car / usr / local est imbriqué dans un dossier appartenant à la racine.

Stan Hutcheon
la source
AFAICT, la mise à niveau vers El Capitan est ce qui m'a causé le problème
Giuseppe
-3

Avez-vous utilisé Disk Utilityselect Macintosh HDpuis run Verify Disk Permissionet ensuite Repair Disk Permissionsi nécessaire, plutôt que de le faire manuellement?

Maintenant, cela ne devrait pas résoudre votre problème, mais c'est un bon point de départ `` connu '' pour voir quand le brassage à domicile modifie les autorisations. Cela pourrait révéler le problème sous-jacent si vous avez de la chance.

Aussi new update -vpour une sortie plus verbeuse, plus les anciens journaux sont ici ~/Library/Logs/Homebrewselon Où se connecte homebrew?

MichaelStoner
la source
2
Disk Utilityne vérifierait pas ou ne réparerait pas les autorisations /usr/localcar ce répertoire n'existe pas sur une nouvelle installation de Yosemite.
dan
J'ai vérifié cette hypothèse entièrement sur Yosemite en créant une nouvelle /usr/localappartenance à moi et en courant DU. Il n'y en a pas /usr/localdans le DUjournal. Et /usr/localm'appartient toujours.
dan