Homebrew autorisations & plusieurs utilisateurs ayant besoin de brasser la mise à jour

79

J'utilise Homebrew pour gérer les installations de paquet sur Lion (Lion Server, mais cela ne devrait pas être grave) .

Homebrew a été installé sous un utilisateur. Maintenant, un utilisateur différent aimerait ajouter un paquet et Homebrew n'est pas content:

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

Est-ce considéré comme mauvais? Je pensais que l'un des avantages d'utiliser /usr/local/pour vos installations était que vous n'en aviez pas besoin sudo. Mais nous le faisons clairement.

Tous les utilisateurs qui auraient besoin de modifier Homebrew sont membres du groupe admin . Donc, je ne pouvais chmod -R g+w /usr/local/que craindre que cela cogne quelque chose ou crée des problèmes de sécurité?!?

Conseil?

$ 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
Meltemi
la source

Réponses:

100

Est-ce considéré comme mauvais? Je pensais que l’un des avantages de l’utilisation de / usr / local / pour vos installations était que vous n’avez pas besoin de sudo. Mais nous le faisons clairement.

Homebrew, par défaut, se configure pour l'accès utilisateur unique à /usr/local. Vous devez donc ouvrir les autorisations sur l'arborescence de répertoires pour qu'elle soit administrée par plusieurs personnes.

Les gens n'ont pas besoin de lancer sudo ici pour administrer l'homebrew. Il vous suffit de modifier certaines autorisations. Puisque vous avez déjà:

Tous les utilisateurs qui auraient besoin de modifier Homebrew sont membres du groupe admin.

Vous devez faire deux autres choses:

  1. Assurez-vous que tout en dessous /usr/localappartient au groupe admin; et
  2. Assurez-vous que tous les membres du groupe adminpeuvent écrire à n'importe quoi /usr/local.

Dans ce cas, les modifications à apporter sont les suivantes:

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

Et tout utilisateur du admingroupe devrait pouvoir gérer l’installation de l’homebrew sur la machine. Si vous devez ajouter un utilisateur au groupe d’administrateurs, procédez comme suit:

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

(cet utilisateur devra se reconnecter pour obtenir les privilèges accordés).

Pour des raisons de sécurité sur la machine, vous pouvez envisager de créer votre propre fork de Homebrew et laisser votre référentiel git homebrew local pointer vers le fork. Cela vous permet de personnaliser Homebrew pour votre environnement et de contrôler les versions des packages que les utilisateurs peuvent installer avec la brewcommande. Lorsque plusieurs personnes effectuent des installations, vous pouvez rencontrer des problèmes de version ou de dépendance.

Ian C.
la source
1
J'ai le même problème et j'ai changé la propriété du groupe et les autorisations du groupe comme suggéré. brew doctorse plaint toujours que, par exemple, /usr/local/includen’est pas accessible en écriture, même si je peux manuellement vérifier que je peux écrire dans un fichier ici (par exemple, en utilisant echo "hello" > /usr/local/include/testfile). Je suis membre du groupe admin. Des idées pour le débogage?
mgd
2
Cette solution a fonctionné pour moi, mais elle ne résout pas le cache local d'Homebrew. Je suggère également de courir:chmod -R g+w /Library/Caches/Homebrew
Drew Dara-Abrams
J'ai trouvé un article de blog dessus blog.strug.de/2012/06/my-homebrew-multi-user-setup et adapté un script à partir de raw.githubusercontent.com/steshaw/shelly/master/bin/…
Steven Shaw
2
On dirait que Homebrew a maintenant transféré le cache dans le répertoire de l'utilisateur actuel. Je viens de voir: ==> Migration / Bibliothèque / Caches / Homebrew vers /Users/bluechain.admin/Library/Caches/Homebrew ... lors de la mise à jour d'une infusion. Si j'interprète correctement cela, cela signifie que nous n'avons plus besoin de nous inquiéter d'avoir un répertoire de cache accessible en écriture pour tous pour Homebrew.
Endareth
Pour les utilisateurs de High Sierra avec ce problème, vous devez maintenant utiliser ceci: sudo chown -R $(whoami) $(brew --prefix)/*au lieu des commandes ci-dessus. Je l'ai eu d' ici
Jeff Kranenburg
7

Vous pouvez activer les autorisations homebrew pour plusieurs utilisateurs via le groupe admin ou via tout autre groupe d'utilisateurs. Voici une recette légèrement développée pour configurer ceci:

Le groupe doit administrer le répertoire d'installation homebrew local. Donc, affectez / usr / local au groupe d’ administrateurs (ou à votre groupe préféré) et activez les autorisations d’écriture des groupes:

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

Le groupe a également besoin d'autorisations pour le cache local de formules et de fichiers sources de homebrew dans / Library / Caches / Homebrew :

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

Si vous rencontrez d'autres problèmes d'autorisations similaires lors de l'utilisation de Homebrew à partir de plusieurs comptes, notez le chemin incriminé et envisagez d'essayer la même approche.

Leif Hanack a blogué une solution similaire , où il crée et configure un groupe d'utilisateurs dédié brew à cet effet.

--Mise à jour le 2015-08-20

J'ai récemment utilisé à nouveau cette réponse pour configurer un compte invité avec un accès homebrew. Pour utiliser Cask à partir du deuxième compte administrateur, je devais également exécuter les commandes suivantes:

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask
VizJS
la source
4

J'allais juste commenter la réponse acceptée (mais je n'ai pas encore la réputation de ça.)

En tant qu'utilisateur de Caskroom.io , je recommanderais également d'ajouter:

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

depuis tonneau, une extension extrêmement utile à homebrew, met tous ses fichiers dans /opt/homebrew-cask

Zen
la source
1
Par /optje suppose que tu veux dire /usr/local? Comme /optn'existe pas sur les récentes installations OS X, même après une installation homebrew.
forquare
En juin 2016, Homebrew-Cask (une extension brassée) a déplacé l'emplacement (par défaut, son dossier Caskroom) sur /usr/local(ou plus précisément $(brew --prefix)), de /opt/homebrew-casksorte que cette réponse est désormais sans objet, mais était valide au moment de sa rédaction. Voir Déplacer l'emplacement par défaut de la pièce n ° 21603
zen
1

Vous devez donner la permission au chemin. lancez ceci en ligne de commande et vous irez bien. Cela a fonctionné pour moi:

sudo chown -R $ USER / usr / local

Asso
la source
0

Je voterais pour définir la permission du groupe - et pour moi, il semble que c'est exactement ce pour quoi elle est faite et ne devrait pas créer de problème de sécurité.

  • Ne pas utiliser sudo.

tl; dr Sudo est dangereux, et que vous avez installé TextMate.app sans sudo de toute façon.

Homebrew est conçu pour fonctionner sans utiliser sudo. Vous pouvez décider de l'utiliser, mais nous vous recommandons fortement de ne pas le faire. Si vous avez utilisé sudo et avez rencontré un bogue, il est probable que ce soit la cause. S'il vous plaît, ne déposez pas de rapport de bogue sauf si vous pouvez le reproduire après avoir réinstallé Homebrew à partir de zéro sans utiliser sudo.

Iolsmit
la source
Donc, votre conseil serait de sudo chmod -R g+w /usr/local/?
Meltemi
Oui, mais vous pouvez demander un deuxième avis en utilisant l’un de ceux-ci: IRC (irc: //irc.freenode.net/#machomebrew); Liste de diffusion ([email protected]); Twitter ( twitter.com/machomebrew )
iolsmit le