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
¿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:
/usr/local
pertenezca al grupo admin
; yadmin
pueda 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 admin
grupo 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 brew
comando. Con varias personas haciendo instalaciones, podría encontrarse con problemas de versión o problemas de dependencia.
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
/opt
supongo que quieres decir /usr/local
? Como /opt
no existe en las instalaciones recientes de OS X, incluso después de una instalación casera./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.° 21603Necesitas 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.
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.
sudo chmod -R g+w /usr/local/
?
mgd
brew doctor
todaví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, usandoecho "hello" > /usr/local/include/testfile
). Soy miembro del grupo de administración. ¿Alguna idea para depurar?Drew Dara Abrams
chmod -R g+w /Library/Caches/Homebrew
steven shaw
Endareth
Jeff Kranenburg
sudo chown -R $(whoami) $(brew --prefix)/*
en lugar de los comandos anteriores. Lo obtuve de aquícubuspl42
g+w
permiso de forma predeterminada? ¿Necesito ejecutar estos comandos una y otra vez?