Ich verwende HomeBrew für meine Portanforderungen (scheint ein bisschen "sauberer" als MacPorts zu sein).
Ich kann ohne sudo
ing installieren (was großartig ist), aber der Mann, der Schritt verbindet, scheint es zu erfordern ( /usr/local/share/man/man3
gehört root
).
Ein Leitfaden Ich fand schon sagt ich rekursiv , chown /usr/local
indem Sie
sudo chown -R `whoami` /usr/local
Ist das sicher? Oder ist es eine schlechte Idee?
Außerdem: 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
sudo chown -R :admin /usr/local
. Auf diese Weise funktioniert es für jeden Administrator des Computers gleich. Möglicherweise müssen Sie jedoch auch ausführen,sudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
um sicherzustellen, dass die Gruppe über denselben Schreibzugriff wie der Benutzer verfügt.Antworten:
Es ist normalerweise besser, die Berechtigungen so streng wie möglich zu halten. Im
/usr/local
Besitz von bleibenroot
bedeutet, dass nur Prozesse, die alsroot
/ ausgeführt werdensudo
(oder über das Apple-Autorisierungsdialogfeld nach Administratorbenutzern fragen), in diesen Bereich schreiben können. Daher muss ein Prozess-Download Sie nach einem Kennwort fragen, bevor Dateien dort beschädigt werden.Aber wie Sie sagen, macht es das Hinzufügen neuer Programme schwieriger.
Ich bin mit dem Laufen einverstanden
sudo
, da Sie die Dinge weniger oft installieren als 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 Homebrew installieren
~/usr/local
und Ihren Pfad, manpath usw. ändern, um die Verzeichnisse darunter dort einzuschließen.Eine bessere Möglichkeit besteht darin, einen anderen Benutzer zu erstellen
homebrew
, beispielsweise ein Verzeichnis, dessen Eigentümer dieser Benutzer ist. Dann installieren Sie dort mitsudo -U homebrew
. Andere Benutzer haben den Vorteil, dass sie keine anderen Dateien überschreiben können, da sie nicht ausgeführt werdenroot
und andere Programme keinen Einfluss auf Homebrew haben. (Ich stelle fest, dass die Homebrew-FAQ diesen neuen Benutzer vorschlagen, wenn Sie sich in einer "Mehrbenutzerumgebung" befinden. Ich würde sagen, dass jeder Unix-Rechner, einschließlich macOS, eine Mehrbenutzerumgebung ist.)Wie das Homebrew-Wiki sagt, finden die Rezepte jedoch nicht alle Fälle von
/usr/local
und ersetzen sie durch das ausgewählte Verzeichnis, an dem wir vermutlich festhalten/usr/local
.quelle
$PATH
und$MANPATH
Benutzerverzeichnisse zu ändern und einzuschließen. Wenn die installierten Programme keine systemweite Installation erfordern, ist dies eine viel bessere Alternative.brew doctor
(unten vorgeschlagen) wurde mir gesagt, dass ich nur die freigegebenen Man-Verzeichnisse abrufen muss ... sicher genug für mich.Ich benutze auch Homebrew und kann bestätigen, dass es absolut sicher ist. Zitieren der Installationsseite in der offiziellen Homebrew-FAQ :
Ich möchte nur hinzufügen, dass es eine sehr schlechte Idee ist , Dinge als root zu tun.
chown
Daher/usr/local
erscheint es mir nicht nur vernünftig (es ist kein Systemverzeichnis unter OSX), sondern auch vernünftig .Ihre Berechtigungen sind (noch) nicht korrekt. Führen Sie einfach den Befehl aus, den Sie aufgelistet haben, und alles wird gut.
Wenn Sie andere Probleme haben, denken Sie daran, das
brew doctor
kann Ihnen helfen!quelle
brew doctor
ist einfach genial.Wenn Sie Homebrew verwenden, sollten Sie die Schreibberechtigung einer bestimmten Gruppe (entweder
admin
oderstaff
) erteilen , damit die Dateien für Benutzer in dieser Gruppe freigegeben werden können.Zum Beispiel:
Weisen Sie dann die Benutzer, die Zugriff auf den
brew
Befehl haben sollen, dieser Gruppe zu (überprüfen Sie Ihre Gruppen über:)id -Gn
.brew
Führen Sie es dann bei der Arbeit mit nicht mit aussudo
.Wenn immer noch ein Berechtigungsproblem vorliegt, führen Sie
brew doctor
den Befehl aus, um das Problem zu beheben.quelle
su myAdminUser
, und dann funktioniert alles wie beabsichtigt. Aber diese Lösung bietet natürlich keine Sicherheit für Leute, die ohnehin schon immer einen Admin-Benutzer haben.Für das, was es wert ist,
/usr/local
wird es von OS X nicht als "System" -Ordner angesehen, und bei einer brandneuen Snow Leopard-Installation ist dieser Ordner leer.Alle in diesem Ordner befindlichen Stammdaten sind das Ergebnis einer
sudo make install
anderen Software oder der Eingabe Ihres Kennworts nach einem Doppelklick auf eine.pkg
Datei, in die die Daten kopiert werden sollen/usr/local
.Owning
/usr/local
hat über ein Jahr lang auf 2 Maschinen "für mich gearbeitet".Wenn Sie MySQL installiert haben (ohne Homebrew zu verwenden) und die Dateien angezeigt haben, können die Datenbanken möglicherweise nicht mehr angezeigt werden (Sie müssen sie also an den Benutzer zurückgeben, unter dem MySQL ausgeführt wird) .)
quelle
/usr/local/bin
ist der Standardwert$PATH
immer noch vorhanden, und alles, was Sie dort ablegen, kann auch von anderen Benutzern verwendet werden und sollte als vertrauenswürdig eingestuft werden . Wenn das gesamte/usr/local/
Verzeichnis über dieselben Berechtigungen verfügt, die/usr/local/share/man
derzeit für das Setup von OP gelten, kann jeder mit einem entsprechenden Skript eine beliebige Binärdatei ändernrm -rf ~
./usr/local
in Ordnung sein. (Aber Sie verwenden wahrscheinlich trotzdem Postgres. :))Wie in Homebrew 1.0.0:
quelle
brew update
, für das immer noch der Besitz von erforderlich ist/usr/local
. Ich werde danach versuchen, die Berechtigungen wiederherzustellen.Ich denke, es ist in Ordnung, dass Benutzer Schreibberechtigungen für haben
/usr/local
- das bedeutet schließlich, dass Sie nichtsudo
für jedes Build-Skript verwenden. Ich mag es nicht , die Idee von einem normalen Benutzer besitz/usr/local
. Ich würde es vorziehen, root (oder ähnliches) zu besitzen/usr/local
, aber ändere die Berechtigungen, damit Benutzer (oder zumindest einige privilegierte Gruppen) darauf schreiben können. Das scheint der begrifflich richtige Ansatz zu sein.quelle
/usr/local/bin
für die meisten Benutzer $ PATH möglicherweise ganz oben steht. Wenn Sie das Verzeichnis für die ganze Welt beschreibbar machen, entstehen auf diese Weise viele Sicherheitslücken.sudo
, oder Sie erteilen einigen Benutzern Schreibrechte/usr/local
. Ich nehme den dritten als am wenigsten riskant an ... es sei denn, Sie kennen einen besseren Weg.~/brew
oder in einem solchen. Das Problem ist jedoch, dass sich im Gegensatz zu Ruby, das ziemlich eigenständig ist, viele * nix-Dienstprogramme in/usr/local
.../usr/local
nicht von der Welt beschreibbar sind: Ich habe eher eine vertrauenswürdige Gruppehomebrew
(nicht nur Administrator), die über Schreibberechtigungen verfügt (erweiterte Berechtigungen wie0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
Total Rock). Dies ist der beste Kompromiss, den ich finden konnte: keinesudo
Skripte zum Erstellen, aber eine gewisse Kontrolle darüber/usr/local
./usr/local
). Beim Durchsuchen von SO-Sites und anderen Sites werden häufig Argumente angezeigt, die sich darauf beziehen, Homebrew in den privaten Ordner des Benutzers zu verschieben/usr/local
, den Besitzer zu ändern und / oder die Gruppe der Benutzer zu wechseln/usr/local
, und so weiter. Es ist schwierig festzustellen, ob es welche gibt universell akzeptable Lösung. Haben Sie einen Blogbeitrag oder einen Artikel dazu oder könnten Sie irgendwo eine tiefere Erklärung geben?