Sind meine Berechtigungen für /usr/local/ richtige?
-
16-10-2019 - |
Frage
Ich bin mit HomeBrew für mein port benötigt (scheint ein bisschen "sauberer" als MacPorts).
Kann ich die Installation ohne sudo
ing (was großartig ist), aber der Mann Verlinkung Schritt scheint zu erfordern (/usr/local/share/man/man3
ist Eigentum von root
).
Ein guide Ich fand schlägt vor, die ich rekursiv chown /usr/local
by doing
sudo chown -R `whoami` /usr/local
Dies ist sicher...oder ist es eine Schlechte Idee,™?
Auch:sind meine Berechtigungen korrekt?
$ pwd
/usr/local/share/man
$ ls -lah
total 32
drwxrwxr-x 8 root staff 272B 4 Set 11:02 .
drwxrwxr-x 9 root staff 306B 10 Set 11:27 ..
drwxr-xr-x 3 root wheel 102B 4 Ago 2009 de
drwxrwxr-x 163 root staff 5,4K 10 Set 11:27 man1
drwxr-xr-x 11 root wheel 374B 10 Set 11:27 man3
drwxr-xr-x 7 ago staff 238B 10 Set 11:39 man5
drwxr-xr-x 11 ago staff 374B 10 Set 11:39 man7
-rw-r--r-- 1 root staff 13K 4 Set 11:02 whatis
Lösung
Es ist normalerweise besser, die Berechtigungen so streng wie möglich zu halten. Halten /usr/local
gehört root
bedeutet, dass nur verarbeitet, die als root
/sudo
(Oder fragen Sie nach dem Dialogfeld "Apple Authorization) nach Administrator.) Kann in diesen Bereich schreiben. Ein Prozess -Download muss Sie daher nach einem Kennwort fragen, bevor Sie dort Dateien beschädigen.
Aber wie Sie sagen, es wird das Hinzufügen neuer Programme schwieriger.
Ich bin in Ordnung mit dem Laufen sudo
, wenn Sie Dinge seltener installieren als sie ausführen, aber Sie müssen darauf vertrauen, dass der Build -Prozess nichts ändert, was er sollte.
Wenn Sie sudo vermeiden möchten, würde ich ein Homebrew installieren ~/usr/local
und ändern Sie Ihren Weg, Ihren Menschenpfad usw., um die darunter liegenden Verzeichnisse einzubeziehen.
Ein besserer Weg ist es, einen anderen Benutzer zu erstellen - z. homebrew
und erstellen Sie ein Verzeichnis, das diesem Benutzer gehört. Dann dort mit mithilfe von installieren sudo -U homebrew
. Andere Benutzer haben den Vorteil, dass sie keine anderen Dateien überschreiben können, da sie nicht als als aus ausgeführt werden root
und andere Programme können sich nicht auf das Homebrew auswirken. (Ich stelle fest, dass die Homebrew -FAQ schlägt diesen neuen Benutzer vor, wenn Sie sich in einer "Multi -Benutzer -Umgebung" befinden. Ich würde sagen, dass jeder UNIX -Gerät einschließlich MacOS eine Multi -Benutzer -Umgebung ist).
Wie das Homebrew -Wiki sagt, dass die Rezepte nicht alle Fälle finden /usr/local
und ersetzen Sie sie durch das gewählte Verzeichnis, von dem ich vermute, dass wir festhalten /usr/local
.
Andere Tipps
Ich benutze Homebrew-auch und kann bestätigen, es ist völlig sicher.Unter Angabe der Installation auf der offiziellen Seite Homebrew FAQ:
Tun Sie sich einen gefallen und Holen
/usr/local
Es ist einfacher
/usr/local/bin
bereits in IhremPATH
.Es ist einfacher
Tonnen von build-Skripte brechen, wenn Ihre Abhängigkeiten nicht in entweder /usr oder /usr/local.Wir lösen das für Homebrew-Formeln (obwohl wir nicht immer der test für Sie), aber Sie werden feststellen, dass viele RubyGems-und Python-setup-Skripts zu brechen, das ist etwas, was außerhalb unserer Kontrolle.- Es ist sicher
Apple erfüllt die POSIX-und Links in diesem Verzeichnis nach uns.Was bedeutet es gibt keine/usr/local
standardmäßig Verzeichnis, so gibt es keine Notwendigkeit zu sorgen über messing up vorhandenen tools.Wenn Sie planen, um gems zu installieren, die abhängig von Braut dann sparen Sie sich einen Haufen ärger und zu installieren
/usr/local
!Es ist nicht trivial zu sagen Edelstein zu suchen, die in nicht-standard-Verzeichnisse für Header und dylibs.Wenn Sie wählen Sie
/usr/local
, alles "funktioniert einfach!"
Ich werde nur hinzufügen, dass Dinge zu tun, wie Wurzel ist eine sehr schlechte Idee, so chown
ing /usr/local
nicht nur scheint mir vernünftig (es ist nicht ein system dir auf OSX), aber sane.
Ihre Berechtigungen nicht korrekt sind (noch) nicht.Führen Sie einfach den Befehl Sie aufgelistet, und Sie re gonna be fine.
Wenn Sie haben anderen Probleme, denken Sie daran, die brew doctor
können Sie helfen!
Wenn Sie ein Homebrew verwenden, sollten Sie die Schreibberechtigung an eine bestimmte Gruppe geben (entweder admin
oder staff
), sodass die Dateien zwischen Benutzern geteilt werden können, die sich in dieser Gruppe befinden.
Zum Beispiel:
sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew
Dann weisen Sie den Benutzern zu, die Zugriff haben sollten brew
Befehl an diese Gruppe (Überprüfen Sie Ihre Gruppen über: id -Gn
).
Dann bei der Arbeit mit brew
, Führen Sie es nicht mit sudo
.
Wenn Sie noch ein Problem mit einer Erlaubnis haben, laufen Sie brew doctor
beim Problem zu beheben.
Für das, was es wert ist, /usr/local
wird nicht als "System" -Fordner von OS X angesehen, und auf einer brandneuen Schneelopard -Installation ist dieser Ordner leer.
Jedes Root-Besitz in diesem Ordner ist ein Ergebnis von sudo make install
auf einer anderen Software oder geben Sie Ihr Passwort nach dem Doppelklicken auf a .pkg
das will Sachen hineinwerfen /usr/local
.
Besitzen /usr/local
hat seit über einem Jahr "für mich" auf 2 Maschinen gearbeitet.
Eine Gotcha ist, dass wenn Sie MySQL installiert haben (ohne Homebrew) und seine Dateien zu korrigieren, wahrscheinlich keine Datenbanken mehr sehen kann .))
Wie in Homebrew 1.0.0:
Homebrew muss nicht mehr Eigentum an /usr /lokal haben. Wenn Sie sich wünschen, können Sie /usr /lokal zu seinem Standardbesitz mit: sudo chown root: rad /usr /local zurückkehren
Ich denke, es ist in Ordnung für Benutzer zu haben Berechtigungen schreiben zu /usr/local
- Schließlich bedeutet das, dass Sie nicht verwenden sudo
auf jedem Build -Skript. Ich mag die Idee eines gewöhnlichen Benutzers nicht besitzen /usr/local
. Ich würde es vorziehen, Wurzel- (oder ähnliche) eigene eigene zu haben /usr/local
, aber ändern Sie die Berechtigungen, damit Benutzer (oder zumindest eine privilegierte Gruppe) darauf schreiben können. Das scheint der konzeptionell korrekte Ansatz zu sein.