Permisos de Homebrew y múltiples usuarios que necesitan preparar actualizaciones


79

Estoy usando Homebrew para administrar las instalaciones de paquetes en Lion (Lion Server en realidad, pero esto no debería importar) .

Homebrew se instaló bajo un usuario. Ahora a un usuario diferente le gustaría agregar un paquete y Homebrew no está contento:

$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master

¿Se considera esto malo? Pensé que una de las ventajas de usar /usr/local/para sus instalaciones era que no necesita sudo. Pero claramente lo hacemos.

Todos los usuarios que tendrían que modificar Homebrew son miembros del grupo de administración . Entonces, ¿podría chmod -R g+w /usr/local/temer que esto moleste algo o cree problemas de seguridad?

¿Consejo?

$ ls -al /usr/local/.git/
total 432
drwxr-xr-x  14 ladmin  admin     476 Feb 24 11:48 .
drwxrwxr-x  14 root    admin     476 Feb  9 15:27 ..
-rw-r--r--   1 ladmin  admin      94 Feb 24 11:48 FETCH_HEAD
-rw-r--r--   1 ladmin  admin      23 Feb 24 11:48 HEAD
-rw-r--r--   1 ladmin  admin      41 Feb  9 15:28 ORIG_HEAD
drwxr-xr-x   2 ladmin  admin      68 Feb  9 15:27 branches
-rw-r--r--   1 ladmin  admin     218 Feb  9 15:27 config
-rw-r--r--   1 ladmin  admin      73 Feb  9 15:27 description
drwxr-xr-x  12 ladmin  admin     408 Feb  9 15:27 hooks
-rw-r--r--   1 ladmin  admin  200272 Feb 24 11:48 index
drwxr-xr-x   3 ladmin  admin     102 Feb  9 15:27 info
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 logs
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 objects
drwxr-xr-x   5 ladmin  admin     170 Feb  9 15:27 refs

Respuestas:


99

¿Se considera esto malo? Pensé que una de las ventajas de usar / usr / local / para sus instalaciones era que no necesita sudo. Pero claramente lo hacemos.

Homebrew, por defecto, se configura para el acceso de un solo usuario /usr/local. Por lo tanto, debe abrir los permisos en el árbol de directorios para que sea administrado por más de una persona.

La gente no necesita ejecutar sudo aquí para administrar homebrew. Solo necesita cambiar algunos permisos. Como ya tienes:

Todos los usuarios que tendrían que modificar Homebrew son miembros del grupo de administración.

Necesitas hacer dos cosas más:

  1. Asegúrese de que todo debajo /usr/localpertenezca al grupo admin; y
  2. Asegúrese de que cualquier persona del grupo adminpueda escribir a cualquier cosa debajo /usr/local.

En este caso los cambios a realizar son:

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Y cualquier usuario del admingrupo debería poder administrar la instalación de homebrew en la máquina. Si necesita agregar un usuario al grupo de administración, esto se puede lograr de la siguiente manera:

 dseditgroup -o edit -a <username> -t user admin

(ese usuario deberá iniciar sesión nuevamente para que se le otorguen los privilegios).

Para la cordura en la máquina, es posible que desee considerar crear su propia bifurcación de Homebrew y hacer que su repositorio local de homebrew git apunte a la bifurcación local. Eso le permite personalizar Homebrew para su entorno y controlar las versiones de paquetes que las personas pueden instalar con el brewcomando. Con varias personas haciendo instalaciones, puede ejecutar problemas de versión o problemas de dependencia.


1
Tengo el mismo problema y he cambiado la propiedad del grupo y los permisos del grupo como se sugiere. brew doctortodavía se queja de que, por ejemplo, /usr/local/includeno se puede escribir a pesar de que manualmente puedo verificar que puedo escribir en un archivo aquí (por ejemplo, usando echo "hello" > /usr/local/include/testfile). Soy miembro del grupo de administración. ¿Alguna idea para depurar?
mgd

2
Esta solución funcionó para mí, pero no aborda el caché local de Homebrew. También sugiero correr:chmod -R g+w /Library/Caches/Homebrew
Drew Dara-Abrams


2
Parece que Homebrew ahora ha cambiado la caché al directorio del usuario actual. Acabo de ver: ==> Migración / Biblioteca / Caches / Homebrew a /Users/bluechain.admin/Library/Caches/Homebrew ... al hacer una actualización de preparación. Si estoy interpretando esto correctamente, esto significa que ya no tenemos que preocuparnos por tener un directorio de caché globalmente grabable para Homebrew.
Endareth

Para los usuarios de High Sierra con este problema, ahora debe usar esto: en sudo chown -R $(whoami) $(brew --prefix)/*lugar de los comandos anteriores. Lo tengo desde aquí
Jeff Kranenburg

7

Puede habilitar los permisos de homebrew para más de un usuario a través del grupo de administración o de cualquier otro grupo de usuarios. Aquí hay una receta ligeramente ampliada para configurar esto:

El grupo necesita administrar el directorio local de instalación de homebrew. Asigne / usr / local al grupo de administración (o su grupo preferido) y habilite los permisos de escritura grupal:

chgrp -R admin /usr/local
chmod -R g+w /usr/local

El grupo también necesita permisos para el caché local de fórmulas y archivos fuente de homebrew en / Library / Caches / Homebrew :

chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Si tiene más problemas de permisos similares mientras usa homebrew de varias cuentas, tenga en cuenta la ruta ofensiva y considere intentar el mismo enfoque.

Leif Hanack ha publicado en el blog una solución similar , donde crea y configura un brebaje de grupo de usuarios dedicado para tal fin.

- Actualización 2015-08-20

Recientemente utilicé esta respuesta nuevamente para configurar una cuenta de invitado con acceso homebrew. Para usar Cask desde la segunda cuenta de administrador, también tuve que ejecutar los siguientes comandos:

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask

4

Solo iba a comentar la respuesta aceptada (pero todavía no tengo la reputación de eso).

Como usuario de Caskroom.io , también recomendaría agregar:

sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w  /Library/Caches/Homebrew/

dado que cask, una extensión extremadamente útil para homebrew, pone todos sus archivos en /opt/homebrew-cask


1
¿Por lo /optque supongo que quieres decir /usr/local? Como /optno existe en las instalaciones recientes de OS X, incluso después de una instalación homebrew.
forquare

En junio de 2016, Homebrew-Cask (una extensión de preparación) movió la ubicación predeterminada de su carpeta Caskroom a /usr/local(o más exactamente $(brew --prefix)), por /opt/homebrew-casklo que esta respuesta ahora es discutible, pero era válida cuando se escribió. Consulte Mover la ubicación predeterminada del caskroom # 21603
zen

1

Necesitas dar permiso a la ruta. ejecute esto en la línea de comando y estará bien para ir. A mí me funcionó:

sudo chown -R $ USUARIO / usr / local


0

Yo votaría por establecer el permiso de grupo, y para mí parece que eso es justo para lo que está allí y no debería crear un problema de seguridad.

  • No uses sudo.

tl; dr Sudo es peligroso e igual instalaste TextMate.app sin sudo.

Homebrew está diseñado para funcionar sin usar sudo. Puede decidir usarlo, pero le recomendamos encarecidamente que no lo haga. Si usó sudo y se encontró con un error, es probable que sea la causa. No presente un informe de error a menos que pueda reproducirlo después de reinstalar Homebrew desde cero sin usar sudo.


Entonces, ¿tu consejo sería sudo chmod -R g+w /usr/local/?
Meltemi

Sí, pero es posible que desee solicitar una segunda opinión utilizando uno de estos: IRC (irc: //irc.freenode.net/#machomebrew); Lista de correo (homebrew@librelist.com); Twitter ( twitter.com/machomebrew )
iolsmit
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.