Permisos de homebrew y múltiples usuarios que necesitan actualizar

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

¿Esto se considera malo? Pensé que una de las ventajas de usar /usr/local/para tus instalaciones era que no necesitas sudo. Pero claramente lo hacemos.

Todos los usuarios que necesitarían modificar Homebrew son miembros del grupo de administración . Entonces, ¿podría chmod -R g+w /usr/local/tener miedo de que esto cause 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 (5)

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

Homebrew, de forma predeterminada, se configura para el acceso de un solo usuario a /usr/local. Por lo tanto, debe abrir los permisos en el árbol de directorios para que lo administre 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 necesitarían modificar Homebrew son miembros del grupo de administración.

Tienes que hacer dos cosas más:

  1. Asegúrese de que todo lo que está debajo /usr/localpertenezca al grupo admin; y
  2. Asegúrese de que cualquier persona del grupo adminpueda escribir cualquier cosa debajo de /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 esta manera:

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

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

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

Tengo el mismo problema y cambié la propiedad del grupo y los permisos del grupo como se sugiere. brew doctortodavía se queja de que, por ejemplo /usr/local/include, no se puede escribir aunque puedo verificar manualmente 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?
Esta solución funcionó para mí, pero no aborda el caché local de Homebrew. También sugiero ejecutar:chmod -R g+w /Library/Caches/Homebrew
Parece que Homebrew ahora ha hecho la transición del caché al directorio del usuario actual. Acabo de ver: ==> Migrar /Library/Caches/Homebrew a /Users/bluechain.admin/Library/Caches/Homebrew... al realizar 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é de escritura global para Homebrew.
Para los usuarios de High Sierra con este problema, ahora necesita usar esto: sudo chown -R $(whoami) $(brew --prefix)/*en lugar de los comandos anteriores. Lo obtuve de aquí
¿Las nuevas instalaciones también tendrán g+wpermiso de forma predeterminada? ¿Necesito ejecutar estos comandos una y otra vez?

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

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

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 se encuentra con más problemas de permisos similares mientras usa homebrew desde varias cuentas, tenga en cuenta la ruta infractora y considere probar el mismo enfoque.

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

--Actualización 2015-08-20

Recientemente usé 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

Solo iba a comentar sobre la respuesta aceptada (pero aún 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/

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

¿ Por /optsupongo que quieres decir /usr/local? Como /optno existe en las instalaciones recientes de OS X, incluso después de una instalación casera.
En junio de 2016, Homebrew-Cask (una extensión de cerveza) movió la ubicación predeterminada de su carpeta Caskroom a /usr/local(o más exactamente $(brew --prefix)) desde /opt/homebrew-cask, por lo que esta respuesta ahora es discutible, pero era válida cuando se escribió. Consulte Mover la ubicación predeterminada de la sala de depósitos n.° 21603

Necesitas dar permiso a la ruta. ejecute esto en la línea de comando y estará bien para comenzar. Funcionó para mí:

sudo chown -R $USUARIO /usr/local

Votaría por establecer el permiso del grupo, y me parece que eso es exactamente para lo que está ahí y no debería crear un problema de seguridad.

  • No uses sudo.

tl; dr Sudo es peligroso, e instaló TextMate.app sin sudo de todos modos.

Homebrew está diseñado para funcionar sin usar sudo. Puede decidir usarlo, pero le recomendamos encarecidamente que no lo haga. Si ha utilizado sudo y se encuentra 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/?
Sí, pero es posible que desee solicitar una segunda opinión utilizando uno de estos: IRC (irc://irc.freenode.net/#machhomebrew) ; Lista de correo (homebrew@librelist.com) ; Twitter ( twitter.com/machomebrew )