permisos de Homebrew y múltiples usuarios que necesitan crear 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 un usuario diferente desea 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 necesitarían modificar Homebrew son miembros del grupo admin . Por lo tanto, podría chmod -R g+w /usr/local/ pero temo que esto haga funcionar algo o genere 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
    
pregunta Meltemi 29.02.2012 - 21:17

5 respuestas

98
  

¿Se considera esto malo? Pensé que una de las ventajas de usar / usr / local / para tus instalaciones es que no necesitas 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 sea administrado por más de una persona.

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

  

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

Necesitas hacer dos cosas más:

  1. Asegúrese de que todo debajo de /usr/local pertenece al grupo admin ; y
  2. Asegúrese de que cualquier persona del grupo admin pueda escribir en 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 grupo admin debería poder administrar la instalación de homebrew en la máquina. Si necesita agregar un usuario al grupo de administradores, esto se puede lograr de la siguiente manera:

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

(ese usuario deberá iniciar sesión nuevamente para tener los privilegios otorgados).

Para la cordura en la máquina, puede considerar crear su propio tenedor de Homebrew y tener su El repositorio local de git de homebrew apunta 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 comando brew . Con varias personas que realizan instalaciones, puede ejecutar problemas de versión o de dependencia.

    
respondido por el Ian C. 21.03.2012 - 20:24
7

Puede habilitar los 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 local de homebrew. Asigne / usr / local al grupo 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 el caché local de fórmulas y archivos de origen de homebrew en / Library / Caches / Homebrew :

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

Si te encuentras con otros problemas de permisos similares mientras usas homebrew de varias cuentas, observa la ruta ofensiva y considera probar el mismo enfoque.

Leif Hanack ha blogueado una solución similar , donde crea y configura un grupo de usuarios dedicado brew para este propósito.

--Actualización 2015-08-20

Recientemente utilicé esta respuesta nuevamente para configurar una cuenta de invitado con acceso homebrew. Para poder 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
    
respondido por el VizJS 09.10.2013 - 03:39
4

Solo iba a comentar sobre 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/

desde cask, una extensión extremadamente útil para homebrew, coloca todos sus archivos en /opt/homebrew-cask

    
respondido por el zen 16.08.2015 - 23:44
1

Necesitas dar permiso a la ruta. ejecuta esto en la línea de comandos y estarás bien para ir. Funcionó para mí:

sudo chown -R $ USER / usr / local

    
respondido por el Asso 09.07.2015 - 04:08
0

Votaría por establecer el permiso de grupo, y para mí, parece que es para eso y no debería crear un problema de seguridad.

  • No uses sudo.
  

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

     

Homebrew está diseñado para funcionar sin usar sudo. Puede decidir utilizarlo, pero le recomendamos encarecidamente que no lo haga. Si has usado sudo y te encuentras 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.

    
respondido por el iolsmit 29.02.2012 - 21:36

Lea otras preguntas en las etiquetas