Vor Jahren konnten Sie brew
als Root durchgehen, indem Sie einfach brew
zu Root wechselten, aber sie haben diese Funktion entfernt. Also habe ich in Homebrew 1.1.6 bearbeitet /usr/local/Homebrew/Library/Homebrew/brew.sh
, um die Root-Prüfung (diejenige, die sagte, dass sie "extrem gefährlich" ist) zu entfernen, damit ich brew
als Root laufen konnte.
Die neuere Version von Homebrew funktioniert immer noch damit, setzt die brew.sh
Datei aber jedes Mal zurück, nachdem ich sie ausgeführt habe brew
, auch wenn ich chmod 500
sie habe. Ich könnte ein Skript schreiben, um es zu ändern und dann brew
automatisch auszuführen, aber ich bin mir nicht sicher, ob dies immer funktioniert und möchte kein Risiko eingehen. Hat jemand eine andere Methode gefunden, um Homebrew als root auszuführen?
Nachdem Sie Ihre Änderung am Skript vorgenommen haben, versuchen Sie, das unveränderliche Flag auf brew.sh zu setzen.
chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh
Ich habe nicht getestet. Als allgemeine Regel verwurzele ich keine Anwendungen, deren Entwickler mich anflehen, dies nicht zu tun.
sudo brew install
werden s wie gewohnt ausgeführt.Typische Benutzer sollten das 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 in jedem Fall überschreiben brew.sh
.
Du kannst nicht aufhören brew
, schließlich redest du vom Laufen brew
.
Also werden wir damit arbeiten. Lassen Sie uns einen Alias einrichten, der kopiert und brew.sh
dann ausgeführt werden soll brew
.
alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'
(Passen Sie die Pfade an Ihr System an).
Jetzt müssen Sie nur noch Folgendes tun:
sudo brew <arguments>
(Es wird root, kopiert über brew.sh
, läuft dann brew
als root mit Argumenten, brew
wird danach überschrieben brew.sh
und Sie sind bereit, es noch einmal zu tun.)
Hinweis: Sie könnten auch sudo
den Alias eingeben, aber dieser Weg fühlt sich besser an, weil Sie jedes Mal nach einem Passwort gefragt werden.
Normalerweise können Sie setuid
( chmod u+s
) aus Sicherheitsgründen nicht zum Rooten von Shell-Skripten verwenden. Perl hat ein separates Programm suidperl
, das installiert werden könnte und die Benutzerprivilegien eskalieren könnte, aber solche Lösungen sind für eine schnelle Antwort etwas tiefgründig.
Allan
brew
als root laufen? Auchsudo
für Ihre Zwecke nicht ausreichend?sudo
sudo
führt es als root aus und es gibt mir den gleichen "extrem gefährlichen" Fehler. Ich möchte als root laufen, da es sonst Probleme beim Installieren bestimmter Pakete gibt, insbesondere wenn etwas nicht über Homebrew installiert wurde (z. B. überpip
). Ich bin diesen Weg schon oft gegangen. Außerdem funktioniert es für mehrere Benutzer ohne seltsame Problemumgehungen nicht richtig, es sei denn, ich installiere alles als root.StrohHara
fd0
root
ist riskant. Selbst wenn Sie ein Paket ohne einen Paketmanager erstellen, würden Sie das Paket als Benutzer ohne Berechtigungen (selbst) erstellen und dann das Paket wieroot
mit installierensudo
. Paketmanager wie Fink und MacPorts bauen beide mit ihren eigenen Benutzern ohne Privilegien und installieren sie dann alsroot
. Homebrew hat keinen solchen Mechanismus.sudo
sudo
BIP2
brew.sh
Datei zurückgesetzt wird, nachdem sie geändert und dann einbrew
Befehl ausgeführt wurde. So kann ich gut laufensudo brew whatever
undbrew whatever
im Tandem fahren. Meinebrew --version
Ausgabe lautet also:Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28)
FYI, ich habe meinebrew.sh
Datei geändert, um alle Zeilen in dercheck-run-command-as-root
Funktion auszukommentieren, und stattdessen eine einzelnereturn
Anweisung am Anfang der Funktion platziert.sudo
sudo brew ...
mehrmals ausführen, aber es "aktualisiert" Homebrew, wenn ichsudo brew install ...
den Hack überschreibe, also es kommt auf das alte Problem zurück.sudo
BIP2
brew install
und es ging ohne Probleme weiter, dh es bliebbrew.sh
unverändert und wurde problemlos installiert (möglicherweise unabhängige Nebenbemerkung: Ich musste zuerstexport HOMEBREW_NO_SANDBOX=true
die Installation korrekt abschließen). Bevor Sie die Datei mit SIP schützen , können Sie essudo chflags schg /usr/local/Homebrew/Library/Homebrew/brew.sh
mit dem versuchenchmod 500
, was Sie getan haben. Das wird, lautman chflags
, "das unveränderliche Flag des Systems setzen (nur Superuser)".BIP2
brew install
Unterstandsudo -s
gemacht und es ging reibungslos weiter.Dennis
sudo
Dennis