Come eseguo Homebrew come root?


11

Anni fa, potevi brewcavartela come root semplicemente andando brewalla radice, ma hanno rimosso quella funzione. Quindi in Homebrew 1.1.6, ero solito modificare /usr/local/Homebrew/Library/Homebrew/brew.shper rimuovere il controllo di root (quello che diceva che era "estremamente pericoloso") in modo da poter eseguire brewcome root.

La versione più recente di Homebrew funziona ancora con questo, ma continua a ripristinare il brew.shfile ogni volta che eseguo brew, anche se lo faccio chmod 500. Potrei scrivere uno script per cambiarlo, quindi eseguirlo brewautomaticamente, ma non sono sicuro che funzionerà sempre e non voglio correre rischi. Qualcuno ha trovato un metodo diverso per eseguire Homebrew come root?


3
Per curiosità, perché vuoi correre brewcome root? Inoltre, sudonon è sufficiente per i tuoi scopi?
Allan,

2
@Allan sudolo esegue come root e mi dà lo stesso errore "estremamente pericoloso". Voglio correre come root perché altrimenti ha problemi con l'installazione di determinati pacchetti, specialmente se qualcosa non è stato installato tramite Homebrew (es. Attraverso pip). Ho seguito quella strada molte volte. Inoltre non funziona correttamente per più utenti senza strane soluzioni alternative a meno che non installi tutto come root.
sudo,

$ su -> $ brewouwouwant?
StrawHara,

1
Costruire un pacchetto software come rootè rischioso. Anche creando un pacchetto senza un gestore pacchetti, lo creeresti come utente non privilegiato (te stesso) e installerai il pacchetto come rootcon sudo. Gestori di pacchetti come Fink e MacPorts compilano entrambi con i propri utenti non privilegiati, quindi installano come root. L'homebrew non ha un tale meccanismo.
f0,

1
Hmm, non vedo il problema da parte mia in cui il brew.shfile viene ripristinato dopo averlo modificato e quindi aver eseguito un brewcomando. Quindi posso correre sudo brew whatevere brew whateverin tandem bene. Il mio brew --versionoutput è quindi: Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) Cordiali saluti, ho modificato il mio brew.shfile per commentare tutte le righe della check-run-command-as-rootfunzione e ho invece inserito una singola returnistruzione nella parte superiore della funzione.
PIL2

Risposte:


2

Dopo aver apportato le modifiche allo script, prova a impostare la bandiera immutabile su brew.sh.

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

Non ho ancora testato Come regola generale, non do il root alle applicazioni i cui sviluppatori mi stanno implorando di non farlo.


Sono anche d'accordo con Jason. C'è una ragione per cui dicono di non far funzionare la birra come radice. Soprattutto perché sono gli sviluppatori e mi fiderò di loro con il loro software. Inoltre, a differenza dei macport, che l'ultima volta che ho controllato lo richiede ancora, brew non ha bisogno o desidera i permessi di root, quindi se rovini qualcosa molto probabilmente non corromperà l'intero sistema. Tutto è contenuto nel tuo account utente e non c'è bisogno di fare casini con sudo.
user9950573,

1
Lavoro confermato, grazie. Ci vuole del tempo per tentare di aggiornare la prima volta, ma in seguito viene sudo brew installeseguito normalmente.
sudo,

1
Non c'è molto da rovinare e rendere un sistema inutilizzabile con i pacchetti che installerei su un Mac. In ogni caso, posso ripristinare il mio sistema entro 30 minuti. Ripulire il mio utente è molto più difficile e molte cose non funzionano se non sono installate a livello di sistema, come spiego nei commenti sopra.
sudo,

1

Gli utenti tipici non dovrebbero farlo, ma tu non sei tipico, vero?

Due problemi:

  1. Non puoi fermare il root. Se insisti nell'usare root, allora root può sovrascrivere brew.shqualunque cosa accada.

  2. Non puoi smettere brew, dopo tutto, stai parlando di correre brew.

Quindi lavoreremo con quello. Configuriamo un alias da copiare e brew.shpoi eseguire brew.

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

(Correggi i percorsi in modo che corrispondano al tuo sistema).

Ora tutto ciò che devi fare è:

sudo brew <arguments>

(Diventerà root, copierà brew.sh, quindi eseguirà brewcome root con argomenti, poi brewsovrascriverà brew.she sarai pronto per ricominciare tutto da capo)

Nota: potresti inserire anche sudol'alias, ma in questo modo ti senti meglio perché ti verrà richiesta una password ogni volta.

In genere non è possibile utilizzare setuid( chmod u+s) per eseguire il root sugli script della shell, per motivi di sicurezza. Perl ha un programma separato suidperlche potrebbe essere installato e potrebbe intensificare il privilegio dell'utente, ma tali soluzioni sono un po 'profonde per una risposta rapida.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.