Jak uruchomić Homebrew jako root?

11

Wiele lat temu można było uciec od działania brewjako root po prostu przez chownowanie brewdo rootowania , ale usunęli tę funkcję. Więc w Homebrew 1.1.6 edytowałem, /usr/local/Homebrew/Library/Homebrew/brew.shaby usunąć kontrolę roota (tę, która powiedziała, że ​​jest „bardzo niebezpieczna”), aby móc uruchomić brewjako root.

Nowsza wersja Homebrew nadal z tym współpracuje, ale wciąż przywraca brew.shplik za każdym razem po uruchomieniu brew, nawet jeśli chmod 500to robię . Mógłbym napisać skrypt, aby go zmienić, a następnie uruchomić brewautomatycznie, ale nie jestem pewien, czy to zawsze zadziała i nie chcę ryzykować. Czy ktoś znalazł inną metodę uruchamiania Homebrew jako root?

sudo
źródło
3
Z ciekawości, dlaczego chcesz uruchomić brewjako root? Czy też sudonie wystarcza do twoich celów?
Allan
2
@Allan sudouruchamia go jako root i daje mi ten sam „bardzo niebezpieczny” błąd. Chcę uruchomić jako root, ponieważ w przeciwnym razie ma problemy z instalacją niektórych pakietów, zwłaszcza jeśli cokolwiek nie zostało zainstalowane przez Homebrew (np. Przez pip). Wiele razy zszedłem tą drogą. Ponadto nie działa poprawnie dla wielu użytkowników bez dziwnych obejść, chyba że zainstaluję wszystko jako root.
sudo
$ su -> $ napar co chcesz?
StrawHara
1
Budowanie pakietu oprogramowania rootjest ryzykowne. Nawet budując pakiet bez menedżera pakietów, skompilowałbyś go jako użytkownik nieuprzywilejowany (sam), a następnie zainstalowałeś pakiet jak w rootprzypadku sudo. Menedżerowie pakietów, tacy jak Fink i MacPorts, budują z własnymi użytkownikami nieuprzywilejowanymi, a następnie instalują jako root. Homebrew nie ma takiego mechanizmu.
fd0
1
Hmm, nie widzę problemu po mojej stronie, w którym brew.shplik jest przywracany po zmodyfikowaniu go, a następnie uruchomieniu brewpolecenia. Więc mogę uruchomić sudo brew whateveri brew whateverw tandemie dobrze. Moje brew --versiondane wyjściowe to: Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) FYI, zmodyfikowałem mój brew.shplik, aby skomentować wszystkie wiersze w check-run-command-as-rootfunkcji i returnzamiast tego umieściłem pojedynczą instrukcję na górze funkcji.
GDP2

Odpowiedzi:

2

Po wprowadzeniu zmiany w skrypcie spróbuj ustawić niezmienną flagę na brew.sh.

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

Nie testowałem Zasadniczo nie kibicuję aplikacjom, których programiści błagają mnie, aby tego nie robić.

Jason
źródło
Zgadzam się również z Jasonem. Istnieje powód, dla którego mówią, że nie należy uruchamiać naparu jako root. Głównie dlatego, że są deweloperami i zaufam im ze swoim oprogramowaniem. Ponadto, w przeciwieństwie do Macports, które ostatnio sprawdzałem, nadal wymaga tego, że brew nie potrzebuje ani nie chce uprawnień root, więc jeśli coś spieprzysz, najprawdopodobniej nie zepsuje całego systemu. Wszystko jest zawarte na koncie użytkownika i nie trzeba się bawić w sudo.
user9950573
1
Potwierdzono pracę, dzięki. Próba aktualizacji po raz pierwszy zajmuje trochę czasu, ale później sudo brew installdziała normalnie.
sudo
1
Nie ma wiele do zepsucia i uczynienia systemu bezużytecznym dzięki pakietom, które instalowałbym na komputerze Mac. W każdym razie mogę przywrócić system w ciągu 30 minut. Czyszczenie mojego użytkownika jest o wiele trudniejsze, a wiele rzeczy od razu nie działa, chyba że jest zainstalowane w całym systemie, jak wyjaśniam w powyższych komentarzach.
sudo
1

Typowi użytkownicy nie powinni tego robić, ale nie jesteś typowy, prawda?

Dwie kwestie:

  1. Nie możesz przestać rootować. Jeśli nalegasz na używanie roota, root może nadpisywać, brew.shbez względu na wszystko.

  2. W brewkońcu nie możesz przestać , mówisz o bieganiu brew.

Więc będziemy nad tym pracować. Ustawmy alias do skopiowania, brew.sha następnie uruchom brew.

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

(Napraw ścieżki pasujące do twojego systemu).

Teraz wszystko, co musisz zrobić, to:

sudo brew <arguments>

(Stanie się rootem, skopiowane brew.sh, a następnie uruchomione brewjako root z argumentami, a następnie brewnadpisze brew.shi będziesz gotowy, aby to zrobić od nowa)

Uwaga: Możesz także wprowadzić sudoalias, ale w ten sposób będzie lepiej, ponieważ za każdym razem będziesz monitowany o hasło.

Zazwyczaj nie można używać setuid( chmod u+s) do rootowania skryptów powłoki dla bezpieczeństwa. Perl ma osobny program, suidperlktóry można zainstalować i może zwiększyć uprawnienia użytkownika, ale takie rozwiązania są nieco głębokie, aby uzyskać szybką odpowiedź.

Sprawny Mac
źródło