Wie führe ich Homebrew als Root aus?

11

Vor Jahren konnte man es schaffen, brewals Root zu laufen, indem man einfach brewauf root chowned , aber diese Funktion wurde entfernt. In Homebrew 1.1.6 habe ich /usr/local/Homebrew/Library/Homebrew/brew.shdie Root-Prüfung (die besagt, dass sie "extrem gefährlich" ist) bearbeitet , um sie brewals Root auszuführen .

Die neuere Version von Homebrew funktioniert immer noch damit, aber die brew.shDatei wird jedes Mal nach dem Ausführen zurückgesetzt brew, selbst wenn ich chmod 500es tue. Ich könnte ein Skript schreiben, um es zu ändern, und dann brewautomatisch 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?

sudo
quelle
3
Warum möchten Sie aus Neugier brewals Root ausgeführt werden? Auch ist sudonicht ausreichend für Ihre Zwecke?
Allan
2
@Allan sudofü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 (z pip. 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.
Sudo
$ su -> $ brauen was auch immer Sie wollen?
StrawHara
1
Erstellen eines Softwarepakets als rootriskant. Selbst wenn Sie ein Paket ohne Paketmanager erstellen, erstellen Sie das Paket als Benutzer ohne Berechtigungen (selbst) und installieren das Paket dann wie rootbei sudo. Paketmanager wie Fink und MacPorts werden beide mit ihren eigenen Benutzern ohne Berechtigungen erstellt und dann als installiert root. Homebrew hat keinen solchen Mechanismus.
fd0
1
Hmm, ich sehe kein Problem an meinem Ende, bei dem die brew.shDatei zurückgesetzt wird, nachdem sie geändert und dann ein brewBefehl ausgeführt wurde. So kann ich laufen sudo brew whateverund brew whateverim Tandem ganz gut. Meine brew --versionAusgabe lautet also: Zu Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) Ihrer Information, ich habe meine brew.shDatei so geändert , dass alle Zeilen in der check-run-command-as-rootFunktion auskommentiert werden, und returnstattdessen eine einzelne Anweisung oben in die Funktion eingefügt.
GDP2

Antworten:

2

Versuchen Sie nach dem Ändern des Skripts, das unveränderliche Flag auf brown.sh zu setzen.

chflags uchg /usr/local/Homebrew/Library/Homebrew/brew.sh

Ich habe nicht getestet. In der Regel verwurzele ich keine Anwendungen, deren Entwickler mich bitten, dies nicht zu tun.

Jason
quelle
Ich stimme auch Jason zu. Es gibt einen Grund, warum sie sagen, dass sie nicht als Wurzel brauen sollen. Meistens, weil sie die Entwickler sind und ich ihnen ihre Software anvertrauen werde. Im Gegensatz zu Macports, die das letzte Mal, als ich sie überprüft habe, immer noch erfordern, benötigt oder möchte Brew keine Root-Berechtigungen. Wenn Sie also etwas vermasseln, wird dies höchstwahrscheinlich nicht Ihr gesamtes System stören. Alles ist in Ihrem Benutzerkonto enthalten und Sie müssen nicht mit sudo herumspielen.
user9950573
1
Bestätigte Arbeit, danke. Der Versuch, das erste Mal zu aktualisieren, dauert einige Zeit, wird jedoch später sudo brew installwie gewohnt ausgeführt.
Sudo
1
Es gibt nicht viel zu vermasseln und ein System mit den Paketen, die ich auf einem Mac installieren würde, unbrauchbar zu machen. Auf jeden Fall kann ich mein System innerhalb von 30 Minuten wiederherstellen. Das Aufräumen meines Benutzers ist viel schwieriger, und viele Dinge funktionieren nur, wenn sie systemweit installiert sind, wie ich in den obigen Kommentaren erläutere.
Sudo
1

Typische Benutzer sollten dies nicht tun, aber Sie sind nicht typisch, oder?

Zwei Probleme:

  1. Sie können root nicht stoppen. Wenn Sie darauf bestehen, root zu verwenden, kann root auf jeden Fall überschreiben brew.sh.

  2. Du kannst doch nicht aufhören brew, du redest vom Laufen brew.

Also werden wir damit arbeiten. Lassen Sie uns einen Alias ​​einrichten, der kopiert und brew.shdann ausgeführt werden soll brew.

alias brew='cp /<modified>/brew.sh /<actuall>/brew.sh; /usr/local/bin/brew'

(Korrigieren Sie die Pfade entsprechend Ihrem System).

Jetzt müssen Sie nur noch:

sudo brew <arguments>

(Es wird root, kopiert es und brew.shwird dann brewals root mit Argumenten ausgeführt. Anschließend brewwird es überschrieben brew.shund Sie können es erneut ausführen. )

Hinweis: Sie können auch sudoden 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 Programm suidperl, das installiert werden kann und die Benutzerrechte erhöhen kann. Solche Lösungen sind jedoch für eine schnelle Antwort etwas tiefgreifend.

Fähiger Mac
quelle