Como executo o Homebrew como root?


11

Anos atrás, era possível executar brewo root como chowning brewto root, mas eles removeram esse recurso. Portanto, no Homebrew 1.1.6, eu costumava editar /usr/local/Homebrew/Library/Homebrew/brew.shpara remover a verificação de raiz (a que dizia ser "extremamente perigosa") para poder executar brewcomo raiz.

A versão mais recente do Homebrew ainda funciona com isso, mas continua revertendo o brew.sharquivo todas as vezes após a execução brew, mesmo que eu chmod 500o faça. Eu poderia escrever um script para alterá-lo e executar brewautomaticamente, mas não tenho certeza se isso sempre funcionará e não quero arriscar. Alguém encontrou um método diferente para executar o Homebrew como root?


3
Por curiosidade, por que você deseja executar brewcomo root? Além disso, sudonão é suficiente para seus propósitos?
Allan

2
O @Allan sudoo executa como root e me dá o mesmo erro "extremamente perigoso". Eu quero rodar como root porque, de outra forma, tem problemas ao instalar certos pacotes, especialmente se alguma coisa foi instalada não através do Homebrew (por exemplo, através pip). Eu segui esse caminho muitas vezes. Além disso, ele não funciona corretamente para vários usuários sem soluções estranhas, a menos que eu instale tudo como root.
Sudo

$ su -> $ brew o que você quiser?
StrawHara 3/17

1
Construir um pacote de software como rooté arriscado. Mesmo construindo um pacote sem um gerenciador de pacotes, você constrói o pacote como um usuário sem privilégios (você mesmo) e depois instala o pacote como rootcom sudo. Os gerenciadores de pacotes, como Fink e MacPorts, constroem com seus próprios usuários sem privilégios e depois instalam como root. O Homebrew não possui esse mecanismo.
fd0

1
Hmm, não vejo o problema do meu lado, em que o brew.sharquivo está sendo revertido após modificá-lo e depois executar um brewcomando. Para que eu possa correr sudo brew whatevere brew whateverem conjunto muito bem. Minha brew --versionsaída é assim: para sua Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) informação, modifiquei meu brew.sharquivo para comentar todas as linhas da check-run-command-as-rootfunção e coloquei uma única returninstrução na parte superior da função.
GDP2 01/06/19

Respostas:


2

Depois de fazer a alteração no script, tente definir o sinalizador imutável em brew.sh.

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

Eu não testei. Como regra geral, eu não dou raiz a aplicativos cujos desenvolvedores estão me implorando para não fazê-lo.


Eu também concordo com Jason. Há uma razão para eles dizerem para não executar a fermentação como raiz. Principalmente porque eles são os desenvolvedores e eu vou confiar neles com seu software. Além disso, ao contrário do macports, que na última vez que verifiquei ainda exige, o brew não precisa ou deseja permissões de root; portanto, se você estragar alguma coisa, provavelmente não funcionará em todo o sistema. Tudo está contido na sua conta de usuário e não há necessidade de mexer com o sudo.
user9950573

1
Trabalho confirmado, obrigado. Leva algum tempo para tentar atualizar pela primeira vez, mas depois sudo brew installé executado normalmente.
Sudo

1
Não há muito o que atrapalhar e tornar um sistema inutilizável com os pacotes que eu instalaria em um Mac. De qualquer forma, posso restaurar meu sistema em 30 minutos. Limpar meu usuário é muito mais difícil, e muitas coisas não funcionam a menos que sejam instaladas em todo o sistema, como explico nos comentários acima.
Sudo

1

Usuários típicos não devem fazer isso, mas você não é típico, é?

Duas questões:

  1. Você não pode parar a raiz. Se você insistir em usar root, o root poderá sobrescrever, brew.shnão importa o quê.

  2. Você não pode parar brew, afinal, você está falando sobre correr brew.

Então, vamos trabalhar com isso. Vamos configurar um alias para copiar e brew.shdepois executar brew.

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

(Corrija os caminhos para corresponder ao seu sistema).

Agora tudo que você precisa fazer é:

sudo brew <arguments>

(Ele se tornará root, copie brew.she execute brewcomo root com argumentos, depois brewsubstituirá brew.she você estará pronto para fazer tudo de novo)

Nota: Você também pode sudoinserir o alias, mas assim fica melhor porque sempre será solicitada uma senha.

Normalmente, você não pode usar setuid( chmod u+s) para fazer root em scripts de shell, por segurança. O Perl possui um programa separado suidperlque pode ser instalado e pode aumentar o privilégio do usuário, mas essas soluções são um pouco profundas para uma resposta rápida.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.