Vor Jahren konnte man es schaffen, brew
als Root zu laufen, indem man einfach brew
auf root chowned , aber diese Funktion wurde entfernt. In Homebrew 1.1.6 habe ich /usr/local/Homebrew/Library/Homebrew/brew.sh
die Root-Prüfung (die besagt, dass sie "extrem gefährlich" ist) bearbeitet , um sie brew
als Root auszuführen .
Die neuere Version von Homebrew funktioniert immer noch damit, aber die brew.sh
Datei wird jedes Mal nach dem Ausführen zurückgesetzt brew
, selbst wenn ich chmod 500
es tue. Ich könnte ein Skript schreiben, um es zu ändern, und dann brew
automatisch ausführen , aber ich bin mir nicht sicher, ob dies immer funktionieren wird und ich möchte kein Risiko eingehen. Hat jemand eine andere Methode gefunden, um Homebrew als Root auszuführen?
brew
als Root ausgeführt werden? Auch istsudo
nicht ausreichend für Ihre Zwecke?sudo
führt es als root aus und es gibt mir den gleichen "extrem gefährlichen" Fehler. Ich möchte als Root ausgeführt werden, da es sonst Probleme bei der Installation bestimmter Pakete gibt, insbesondere wenn etwas nicht über Homebrew installiert wurde (zpip
. B. über ). Ich bin diesen Weg schon oft gegangen. Außerdem funktioniert es für mehrere Benutzer ohne seltsame Problemumgehungen nicht ordnungsgemäß, es sei denn, ich installiere alles als Root.root
riskant. Selbst wenn Sie ein Paket ohne Paketmanager erstellen, erstellen Sie das Paket als Benutzer ohne Berechtigungen (selbst) und installieren das Paket dann wieroot
beisudo
. Paketmanager wie Fink und MacPorts werden beide mit ihren eigenen Benutzern ohne Berechtigungen erstellt und dann als installiertroot
. Homebrew hat keinen solchen Mechanismus.brew.sh
Datei zurückgesetzt wird, nachdem sie geändert und dann einbrew
Befehl ausgeführt wurde. So kann ich laufensudo brew whatever
undbrew whatever
im Tandem ganz gut. Meinebrew --version
Ausgabe lautet also: ZuHomebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28)
Ihrer Information, ich habe meinebrew.sh
Datei so geändert , dass alle Zeilen in dercheck-run-command-as-root
Funktion auskommentiert werden, undreturn
stattdessen eine einzelne Anweisung oben in die Funktion eingefügt.Antworten:
Versuchen Sie nach dem Ändern des Skripts, das unveränderliche Flag auf brown.sh zu setzen.
Ich habe nicht getestet. In der Regel verwurzele ich keine Anwendungen, deren Entwickler mich bitten, dies nicht zu tun.
quelle
sudo brew install
wie gewohnt ausgeführt.Typische Benutzer sollten dies nicht tun, aber Sie sind nicht typisch, oder?
Zwei Probleme:
Sie können root nicht stoppen. Wenn Sie darauf bestehen, root zu verwenden, kann root auf jeden Fall überschreiben
brew.sh
.Du kannst doch nicht aufhören
brew
, du redest vom Laufenbrew
.Also werden wir damit arbeiten. Lassen Sie uns einen Alias einrichten, der kopiert und
brew.sh
dann ausgeführt werden sollbrew
.(Korrigieren Sie die Pfade entsprechend Ihrem System).
Jetzt müssen Sie nur noch:
(Es wird root, kopiert es und
brew.sh
wird dannbrew
als root mit Argumenten ausgeführt. Anschließendbrew
wird es überschriebenbrew.sh
und Sie können es erneut ausführen. )Hinweis: Sie können auch
sudo
den Alias eingeben, dies fühlt sich jedoch besser an, da Sie jedes Mal zur Eingabe eines Kennworts aufgefordert werden.Normalerweise können Sie aus Sicherheitsgründen nicht
setuid
(chmod u+s
) zum Rooten in Shell-Skripten verwenden. Perl verfügt über ein separates Programmsuidperl
, das installiert werden kann und die Benutzerrechte erhöhen kann. Solche Lösungen sind jedoch für eine schnelle Antwort etwas tiefgreifend.quelle