¿Cómo ejecuto Homebrew como root?


11

Hace años, podía salirse con la suya brewcomo usuario root simplemente conociendo brewa root, pero eliminaron esa característica. Entonces, en Homebrew 1.1.6, solía editar /usr/local/Homebrew/Library/Homebrew/brew.shpara eliminar la verificación de raíz (la que decía que era "extremadamente peligrosa") para poder ejecutarla brewcomo raíz.

La versión más nueva de Homebrew todavía funciona con eso, pero sigue volviendo el brew.sharchivo cada vez que lo ejecuto brew, incluso si lo hago chmod 500. Podría escribir un script para cambiarlo y luego ejecutarlo brewautomáticamente, pero no estoy seguro de si esto siempre funcionará y no quiero arriesgarme. ¿Alguien ha encontrado un método diferente para ejecutar Homebrew como root?


3
Por curiosidad, ¿por qué quieres correr brewcomo root? Además, ¿ sudono es suficiente para sus propósitos?
Allan

2
@Allan sudolo ejecuta como root, y me da el mismo error "extremadamente peligroso". Quiero ejecutar como root porque de lo contrario tiene problemas para instalar ciertos paquetes, especialmente si algo se instaló no a través de Homebrew (por ejemplo, a través de pip). He recorrido esa ruta muchas veces. Además, no funciona correctamente para múltiples usuarios sin soluciones extrañas a menos que instale todo como root.
sudo

$ su -> $ ¿Qué quieres?
StrawHara

1
Construir un paquete de software como rootes arriesgado. Incluso compilando un paquete sin un administrador de paquetes, compilaría el paquete como un usuario sin privilegios (usted mismo) y luego instalaría el paquete como rootcon sudo. Los administradores de paquetes como Fink y MacPorts construyen con sus propios usuarios sin privilegios y luego los instalan como root. Homebrew no tiene ese mecanismo.
fd0

1
Hmm, no veo el problema de mi lado en el que el brew.sharchivo se revierte después de modificarlo y luego ejecutar un brewcomando. Entonces puedo correr sudo brew whatevery brew whateveren conjunto muy bien. Mi brew --versionsalida es así: para su información Homebrew 1.2.1-98-g803f9cbf7b-dirty Homebrew/homebrew-core (git revision d3d6; last commit 2017-05-28) , modifiqué mi brew.sharchivo para comentar todas las líneas en la check-run-command-as-rootfunción y coloqué una sola returndeclaración en la parte superior de la función.
GDP2

Respuestas:


2

Después de realizar el cambio en el script, intente configurar el indicador inmutable en brew.sh.

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

No he probado Como regla general, no doy raíz a las aplicaciones cuyos desarrolladores me ruegan que no lo haga.


También estoy de acuerdo con Jason. Hay una razón por la que dicen que no se ejecute brew como root. Principalmente porque son los desarrolladores y confiaré en ellos con su software. Además, a diferencia de los macports, que la última vez que revisé aún requieren eso, brew no necesita ni quiere permisos de root, por lo que si arruinas algo, lo más probable es que no afecte todo tu sistema. Todo está contenido en su cuenta de usuario y no es necesario estar jugando con sudo.
user9950573

1
Trabajo confirmado, gracias. Intenta actualizarse la primera vez, pero luego se sudo brew installejecuta normalmente.
sudo

1
No hay mucho que estropear e inutilizar un sistema con los paquetes que instalaría en una Mac. De todos modos, puedo restaurar mi sistema en 30 minutos. Limpiar a mi usuario es mucho más difícil, y muchas cosas directamente no funcionan a menos que esté instalado en todo el sistema, como explico en los comentarios anteriores.
sudo

1

Los usuarios típicos no deberían hacer esto, pero tú no eres típico, ¿verdad?

Dos cuestiones:

  1. No puedes detener la raíz. Si insiste en usar root, entonces root puede sobrescribir brew.shsin importar qué.

  2. No puedes parar brew, después de todo, estás hablando de correr brew.

Entonces trabajaremos con eso. Vamos a configurar un alias para copiar y brew.shluego ejecutar brew.

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

(Arregle las rutas para que coincida con su sistema).

Ahora todo lo que necesitas hacer es:

sudo brew <arguments>

(Se convertirá en raíz, se copiará brew.sh, luego se ejecutará brewcomo raíz con argumentos, luego brewse sobrescribirá brew.shy estará listo para hacerlo de nuevo)

Nota: También puede poner sudoel alias, pero de esta manera se siente mejor porque se le pedirá una contraseña cada vez.

Por lo general, no puede usar setuid( chmod u+s) para rootear en scripts de shell, por seguridad. Perl tiene un programa separado suidperlque podría instalarse y podría aumentar los privilegios del usuario, pero tales soluciones son un poco profundas para una respuesta rápida.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.