82 votos

Permisos de homebrew y múltiples usuarios que necesitan actualizar el brew

Estoy usando Homebrew para gestionar la instalación de paquetes en Lion (Lion Server en realidad pero esto no debería importar) .

Homebrew fue instalado bajo un usuario. Ahora un usuario diferente quiere añadir 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 fue que no necesita sudo . Pero está claro que sí.

Todos los usuarios que tendrían que modificar Homebrew son miembros de admin grupo. Así, podría chmod -R g+w /usr/local/ ¿pero temes que esto brickee algo o cree problemas de seguridad?

¿Asesoría?

$ 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

103voto

shsteimer Puntos 8749

¿Se considera esto malo? Pensé que una de las ventajas de usar /usr/local/ para tus instalaciones era que no necesitabas sudo. Pero está claro que sí.

Homebrew, por defecto, se configura para el acceso de un solo usuario a /usr/local . Así que hay que abrir los permisos del árbol de directorios para que sea administrado por más de una persona.

La gente no necesita ejecutar sudo aquí para administrar homebrew. Sólo necesita cambiar algunos permisos. Como ya lo has hecho:

Todos los usuarios que necesitan modificar Homebrew son miembros del grupo admin.

Tienes que hacer dos cosas más:

  1. Asegúrese de que todo bajo /usr/local pertenece al grupo admin y
  2. Asegúrese de que cualquier persona del grupo admin puede escribir en cualquier cosa bajo /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 admin debería ser capaz de gestionar la instalación de homebrew en la máquina. Si necesita añadir un usuario al grupo de administradores, puede hacerlo así:

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

(ese usuario tendrá que volver a conectarse para que se le concedan los privilegios).

Para la cordura en la máquina, es posible que desee considerar crear su propia horquilla de Homebrew y haz que tu repositorio local de homebrew git apunte al fork local. Eso le permite personalizar Homebrew para su entorno y controlar las versiones de los paquetes que la gente puede instalar con el brew comando. Si hay varias personas que hacen las instalaciones, puede haber problemas de versiones o de dependencias.

1 votos

Tengo el mismo problema y he cambiado la propiedad del grupo y los permisos del grupo como se sugiere. brew doctor todavía se queja de que, por ejemplo /usr/local/include no es escribible 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 administradores. ¿Alguna idea para depurar?

2 votos

Esta solución me ha funcionado, pero no se ocupa de la caché local de Homebrew. También sugiero ejecutar: chmod -R g+w /Library/Caches/Homebrew

0 votos

He encontrado una entrada en el blog sobre ello blog.strug.de/2012/06/mi-homebrew-multi-user-setup y adaptado un script de ese raw.githubusercontent.com/steshaw/shelly/master/bin/

7voto

Cal Puntos 5474

Puedes habilitar los permisos de homebrew para más de un usuario a través del grupo admin, 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 local de homebrew. Así que asigna /usr/local a admin (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 la caché local de fórmulas y archivos fuente de homebrew en /Biblioteca/Cachés/Homebrew :

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

Si te encuentras con más problemas de permisos similares mientras usas homebrew desde múltiples cuentas, anota la ruta ofensiva y considera intentar el mismo enfoque.

Leif Hanack ha publicado en su blog un solución similar donde crea y configura un grupo de usuarios dedicado cervecero para el propósito.

-Actualización 2015-08-20

Hace poco volví a utilizar esta respuesta para crear una cuenta de invitado con acceso a homebrew. Para utilizar Cask desde la segunda cuenta de administrador tuve que ejecutar también los siguientes comandos:

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

4voto

zen Puntos 41

Iba a comentar la respuesta aceptada (pero aún no tengo la reputación para ello).

Como usuario de Caskroom.io También recomendaría añadir:

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

1 votos

Por /opt Supongo que te refieres a /usr/local ? Como /opt no existe en las instalaciones recientes de OS X, incluso después de una instalación homebrew.

0 votos

En junio de 2016, Homebrew-Cask (una extensión de cerveza) trasladó la ubicación por defecto de su carpeta Caskroom a /usr/local (o más exactamente $(brew --prefix) ) de /opt/homebrew-cask por lo que esta respuesta es ahora discutible, pero era válida cuando se escribió. Véase Mover la ubicación por defecto de la sala de barriles #21603

1voto

Asso Puntos 1

Tienes que dar permiso a la ruta. ejecuta esto en línea de comandos y estarás bien para ir. A mí me ha funcionado:

sudo chown -R $USER /usr/local

-1voto

penkoad Puntos 41

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

  • No uses sudo.

tl;dr Sudo es peligroso, y de todos modos instalaste TextMate.app sin sudo.

Homebrew está diseñado para funcionar sin usar sudo. Puedes decidir utilizarlo pero te recomendamos encarecidamente que no lo hagas. Si ha utilizado sudo y se encuentra con un error, es probable que sea la causa. Por favor, no envíes un informe de error a menos que puedas reproducirlo después de reinstalar Homebrew desde cero sin usar sudo.

0 votos

Por lo tanto, su consejo sería sudo chmod -R g+w /usr/local/ ?

0 votos

Sí, pero puede pedir una segunda opinión con uno de estos: IRC (irc://irc.freenode.net/#machomebrew) ; Lista de correo (homebrew@librelist.com) ; Twitter ( twitter.com/machomebrew )

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X