82 votes

Permissions Homebrew & plusieurs utilisateurs devant faire la mise à jour de Brew

J'utilise Homebrew pour gérer l'installation des paquets sur Lion (Serveur Lion en fait mais cela ne devrait pas avoir d'importance) .

Homebrew a été installé sous un seul utilisateur. Maintenant, un autre utilisateur souhaite 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 que c'est considéré comme mauvais ? Je pensais que l'un des avantages d'utiliser /usr/local/ pour vos installations était que vous n'avez pas besoin sudo . Mais il est clair que nous le faisons.

Tous les utilisateurs qui auraient besoin de modifier Homebrew sont membres de admin groupe. Donc, je pourrais chmod -R g+w /usr/local/ mais j'ai peur que cela bloque quelque chose ou crée des problèmes de sécurité !

Des conseils ?

$ 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 Points 8749

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

Homebrew, par défaut, se configure pour un accès mono-utilisateur à /usr/local . Il faut donc ouvrir les permissions sur l'arborescence des répertoires pour qu'elle puisse être administrée par plus d'une personne.

Les gens n'ont pas besoin d'exécuter sudo ici pour administrer homebrew. Il suffit de modifier certaines permissions. Comme vous l'avez déjà fait :

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

Vous devez faire deux choses de plus :

  1. Assurez-vous que tout ce qui est sous /usr/local appartient au groupe admin ; et
  2. Assurez-vous que quelqu'un du groupe admin peut écrire sur tout ce qui se trouve sous /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 de la admin devrait être en mesure de gérer l'installation homebrew sur la machine. Si vous avez besoin d'ajouter un utilisateur au groupe admin, cela peut se faire de la manière suivante :

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

(cet utilisateur devra se connecter à nouveau pour que les privilèges lui soient accordés).

Pour des raisons de sécurité sur la machine, vous pouvez envisager de créer votre propre fourchette de Homebrew et faites en sorte que votre dépôt git local de Homebrew pointe vers le fork local. Cela vous permet de personnaliser Homebrew pour votre environnement et de contrôler les versions des paquets que les gens peuvent installer avec la commande brew commande. Si plusieurs personnes effectuent les installations, vous pouvez rencontrer des problèmes de version ou de dépendance.

1 votes

J'ai le même problème et j'ai changé la propriété du groupe et les permissions du groupe comme suggéré. brew doctor se plaint toujours que, par exemple /usr/local/include n'est pas accessible en écriture même si je peux vérifier manuellement que je peux écrire dans un fichier ici (par exemple en utilisant echo "hello" > /usr/local/include/testfile ). Je suis membre du groupe des administrateurs. Des idées pour le débogage ?

2 votes

Cette solution a fonctionné pour moi, mais elle ne prend pas en compte le cache local de Homebrew. Je suggère également d'exécuter : chmod -R g+w /Library/Caches/Homebrew

0 votes

J'ai trouvé un article de blog sur ce sujet blog.strug.de/2012/06/my-homebrew-multi-user-setup et adapté un script à partir de cela raw.githubusercontent.com/steshaw/shelly/master/bin/

7voto

Cal Points 5474

Vous pouvez activer les permissions homebrew pour plus d'un utilisateur via le groupe admin, ou via tout autre groupe d'utilisateurs. Voici une recette légèrement étendue pour configurer ceci :

Le groupe doit administrer le répertoire d'installation local de homebrew. Il faut donc assigner /usr/local à admin (ou votre groupe préféré) et activez les droits d'écriture du groupe :

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

Le groupe a également besoin de permissions pour le cache local de formules et de fichiers sources de homebrew à l'adresse /Bibliothèque/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 d'accès incriminé et envisagez d'essayer la même approche.

Leif Hanack a publié sur son blog un solution similaire où il crée et configure un groupe d'utilisateurs dédié. brasser à cette fin.

-Mise à jour 2015-08-20

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

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

4voto

zen Points 201

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

En tant qu'utilisateur de Caskroom.io je recommande é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/

puisque cask, une extension extrêmement utile de homebrew, place tous ses fichiers dans le répertoire /opt/homebrew-cask

1 votes

Par /opt Je suppose que vous voulez dire /usr/local ? Comme /opt n'existe pas sur les installations récentes d'OS X, même après une installation homebrew.

0 votes

En juin 2016, Homebrew-Cask (une extension de brassage) a déplacé l'emplacement par défaut de son dossier Caskroom à . /usr/local (ou plus exactement $(brew --prefix) ) de /opt/homebrew-cask Cette réponse est donc maintenant sans objet, mais elle était valable lorsqu'elle a été écrite. Voir Déplacer l'emplacement par défaut de la salle des tonneaux #21603

1voto

Asso Points 11

Vous devez donner la permission au chemin. Exécutez ceci en ligne de commande et vous serez prêt à partir. Cela a fonctionné pour moi :

sudo chown -R $USER /usr/local

-1voto

iolsmit Points 4325

Je voterais pour que l'on définisse l'autorisation du groupe - et il me semble que c'est exactement pour cela qu'elle est là et qu'elle ne devrait pas créer de problème de sécurité.

  • N'utilisez pas sudo.

tl;dr Sudo est dangereux, et 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 rencontré un bogue, il est probable qu'il en soit la cause. Veuillez ne pas remplir un rapport de bogue à moins que vous ne puissiez le reproduire après avoir réinstallé Homebrew depuis le début sans utiliser sudo.

0 votes

Donc, votre conseil serait de sudo chmod -R g+w /usr/local/ ?

0 votes

Oui, mais vous pouvez demander un deuxième avis en utilisant l'une de ces méthodes : IRC (irc://irc.freenode.net/#machomebrew) ; Liste de diffusion (homebrew@librelist.com) ; Twitter ( twitter.com/machomebrew )

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X