So stellen Sie fest, warum sich der Besitz von / usr / local von my-username in root ändert

13

Ich benutze homebrewals Paketmanager für bestimmte Webentwicklungs-Apps. Behaltenbrew auf dem Laufenden , laufe ich update brewalle paar Tage und laufe auch brew doctor. Normalerweise ist das in Ordnung und brewich bin bereit zu brauen.

Hin und wieder erhalte ich jedoch den folgenden Fehler:

Warnung: / usr / local / etc ist nicht beschreibbar.

Dies kann passieren, wenn Sie "sudo make install" -Software verwenden, die nicht von Homebrew verwaltet wird. Wenn eine Formel versucht, eine Datei in dieses Verzeichnis zu schreiben, schlägt die Installation während des Verknüpfungsschritts fehl.

Du solltest möglicherweiße chown / usr / local / etc

Warnung: Das Verzeichnis / usr / local ist nicht beschreibbar. Auch wenn dieses Verzeichnis bei der Installation von Homebrew beschreibbar war, können durch andere Software die Berechtigungen für dieses Verzeichnis geändert werden. Einige Versionen der "InstantOn" -Komponente von Airfoil sind dafür bekannt.

Sie sollten wahrscheinlich den Besitz und die Berechtigungen von / usr / local zurück in Ihr Benutzerkonto ändern.

Es ist einfach genug, die Berechtigungen auf meinen Benutzernamen zurückzusetzen. Danachbrew scheint alles in Ordnung zu sein.

Aber was ist der Grund dafür?

Gibt es ein Protokoll, aus dem hervorgeht, warum sich die Berechtigungen ändern?

Daniel Müller
quelle
3
Kein Protokoll, aber beachten Sie, dass es der Unix-Standard ist, / usr / local im Besitz von rood zu haben. Lösung ist es sowohl mit Paket - Manager (Homebrew) und Standard - Unix - Kompilierung kein Verzeichnis mischen - Verwenden Sie ein anderes Verzeichnis für einen von ihnen
user151019
3
Das Hinzufügen von Software zum selben Speicherort, den ein Paketverwalter verwendet, ist eine schlechte Idee, ebenso wie das Ändern der Eigentumsrechte und Berechtigungen für /usr/local. Aber wenn Sie darauf bestehen, dann könnten Sie make installohne sudoPakete verwenden, die Sie selbst installieren.
fd0
1
Durch das Aktualisieren von OS X werden normalerweise die Eigentumsrechte und Berechtigungen von / usr / local zurückgesetzt.
mspasov
1
@Others ah Ich las das Zitat von Homebrew und nicht die Frage
user151019
1
Was haben Sie (manuell oder über einen anderen Paketmanager) auf Ihrem Mac installiert, der für die Standardinstallation konfiguriert wurde /usr/local?
Dan

Antworten:

13

Ich hatte genau das gleiche Problem und es stellte sich heraus, dass Sophos Auto-Update daran schuld war. Das habe ich herausgefunden, indem ich Folgendes ausgeführt habe:sudo fs_usage | grep "usr/local"

Es hat eine Weile gedauert, aber irgendwann sah ich Sophos 'hilfreichen "Installation" -Daemon, der mit den Berechtigungen von / usr / local in Konflikt geriet.

Ich versuche immer noch, eine geeignete Lösung für dieses Verhalten zu finden.

EDIT: Ich glaube, Sophos hat dieses Problem behoben, siehe den Link in den Kommentaren dieser Antwort. Es scheint zumindest für mich behoben zu sein!

Andere
quelle
4
Hier gibt es eine Diskussion: community.sophos.com/products/free-antivirus-tools-for-desktops/… Dies sollte im November 2015
behoben werden
@ JoeZuntz Schöne Entdeckung! Es ist großartig, dass sie tatsächlich Abhilfe schaffen.
Andere
@others danke für diese Info. Ich konnte alles nach dem Upgrade auf 10.11.1 reparieren und Homebrew wieder zum Laufen bringen, aber meistens hatten sich die Berechtigungen jedes Mal geändert, wenn ich ein Brew-Upgrade durchführte. Es nervte mich, welche Software die Dauerwellen unter / usr / local ständig änderte.
Tim X
@TimX Ja, es ist ein bisschen beschissen ... Zum Glück sieht es so aus, als würde Sophos es Ende nächster Woche, am 20. November, patchen.
Andere
4

Es stellt sich heraus, dass Filewave der Schuldige ist. Filewave ist eine Systemverwaltungssoftware, mit der unsere Schule Software-Updates pusht. Danke für die Eingabe.

Daniel Müller
quelle
2

Ich habe nur eine ungefähre Idee, wie ich an den Erlaubnisdieb komme. Dies ist keine Lösung für Ihr Problem, sondern eine Art Workaround.

Wie wäre es, einen Watchdog in Automator oder mit Hazel (Ordneraktionen) zu schreiben, um diesen bestimmten Ordner zu überwachen, aber anstatt eine Funktion wie Bilder skalieren hinzuzufügen, verwenden Sie einfach ein Shellscript, das mehrere Shell-Befehle ausführt:

  • Wenn der Ordner in irgendeiner Weise geändert wird, erstellen Sie einfach eine Momentaufnahme der Berechtigungen und der ID des aktuell zugreifenden Prozesses mit fuser <foldername>.
  • dann suchen Sie in der Prozesstabelle die Prozess-ID ( ps auxwwwwww | grep <process id>) und schließlich
  • Schreiben Sie sich eine E-Mail mit diesen gesammelten Informationen.

Leider bin ich kein Automator sadhu, aber ich habe durch Google herausgefunden, dass es viele Lösungen für ein solches ähnliches Problem gibt.

Garex
quelle
0

Wenn Sie Time Machine verwenden, können Sie die ungefähre Zeit ermitteln, zu der Berechtigungen geändert wurden, indem Sie Backups.backupdbim Terminal nachsehen. Verwenden Sie ls -ldin den zeitgestempelten Ordnern, z

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

Welche Eigentümer- und Gruppeninformationen anzeigen.

Sobald Sie das Datum der Änderung ermittelt haben, können Sie herausfinden, was sich sonst noch auf Ihrem System geändert hat. Eine einfache Methode besteht darin, die Finder-Datei ›Suchen zu verwenden und ein Last modified dateKriterium hinzuzufügen . Andere gute Tools sind findund mdfindim Terminal.

duozmo
quelle
-1

Dies ist ein Nebeneffekt bei der Aktualisierung Ihres Systems. Wahrscheinlich führt OS X während des Aktualisierungsvorgangs eine allgemeine "Reparatur" durch, da / usr / local in einem Stammordner verschachtelt ist.

Stan Hutcheon
quelle
AFAICT, ein Upgrade auf El Capitan war für mich das Problem
Giuseppe
-3

Haben Sie Disk Utilityselect verwendet , Macintosh HDdann ausgeführt Verify Disk Permissionund dann Repair Disk Permissionbei Bedarf, anstatt es manuell zu tun?

Dies sollte Ihr Problem nicht beheben, aber es ist ein guter "bekannter" Ausgangspunkt, um zu sehen, wann Home Brew die Berechtigungen ändert. Es könnte das zugrunde liegende Problem aufzeigen, wenn Sie Glück haben.

Auch new update -vfür eine ausführlichere Ausgabe, plus alte Protokolle sind hier ~/Library/Logs/Homebrewlaut Woher kommt Homebrew-Protokoll?

MichaelStoner
quelle
2
Disk UtilityIch würde Berechtigungen für nicht überprüfen oder reparieren, /usr/localda dieses Verzeichnis bei einer Neuinstallation von Yosemite nicht vorhanden ist.
Dan
Ich überprüfe diese Hypothese vollständig auf Yosemite, indem /usr/localich eine neue Zugehörigkeit zu mir erstelle und laufe DU. Es gibt keine /usr/localim DUProtokoll. Und /usr/localgehört immer noch zu mir.
dan