101 votes

Mes permissions pour /usr/local/ sont-elles correctes ?

J'utilise HomeBrew pour mes besoins de portage (semble un peu plus "propre" que MacPorts).

Je peux installer sans sudo (ce qui est génial), mais l'étape de liaison avec l'homme semble l'exiger ( /usr/local/share/man/man3 est détenu par root ).
A guide J'ai trouvé suggère que je récursivement chown /usr/local en faisant

sudo chown -R `whoami` /usr/local

Est-ce sûr ou est-ce une mauvaise idée™ ?

De plus, mes autorisations sont-elles correctes ?

$ pwd
/usr/local/share/man
$ ls -lah
total 32
drwxrwxr-x    8 root  staff   272B  4 Set 11:02 .
drwxrwxr-x    9 root  staff   306B 10 Set 11:27 ..
drwxr-xr-x    3 root  wheel   102B  4 Ago  2009 de
drwxrwxr-x  163 root  staff   5,4K 10 Set 11:27 man1
drwxr-xr-x   11 root  wheel   374B 10 Set 11:27 man3
drwxr-xr-x    7 ago   staff   238B 10 Set 11:39 man5
drwxr-xr-x   11 ago   staff   374B 10 Set 11:39 man7
-rw-r--r--    1 root  staff    13K  4 Set 11:02 whatis

55voto

gil Points 828

J'utilise aussi Homebrew et je peux confirmer que c'est totalement sûr. En citant le Installation sur la page officielle de l FAQ Homebrew :

Faites-vous une faveur et choisissez /usr/local

  1. C'est plus facile.
    /usr/local/bin est déjà dans votre PATH .

  2. C'est plus facile.
    Des tonnes de build scripts se cassent si leurs dépendances ne sont pas dans /usr ou /usr/local. Nous corrigeons cela pour les formules Homebrew (bien que nous ne le testions pas toujours), mais vous trouverez que beaucoup de RubyGems et Python setup scripts se cassent ce qui est quelque chose hors de notre contrôle.

  3. C'est sûr.
    Apple s'est conformé à POSIX et nous a laissé ce répertoire. Ce qui signifie qu'il n'y a pas /usr/local par défaut, il n'y a donc pas lieu de s'inquiéter de l'altération des outils existants.

Si vous prévoyez d'installer des gemmes qui dépendent des brassages, épargnez vous un tas de tracas et installez à /usr/local !

Il n'est pas trivial de dire à gem de chercher les en-têtes et les dylibs dans des répertoires non standard. Si vous choisissez /usr/local tout "marche comme sur des roulettes".

Je vais juste ajouter que faire les choses comme Root est une très mauvaise idée donc chown ing /usr/local Non seulement cela me semble raisonnable (ce n'est pas un répertoire système sur OSX), mais sain d'esprit .

Vos autorisations ne sont pas (encore) correctes. Exécutez simplement la commande que vous avez listée et tout ira bien.

Si vous avez d'autres problèmes, rappelez-vous que le brew doctor peut vous aider !

41voto

yoliho Points 340

Il est généralement préférable de maintenir les permissions aussi strictes que possible. Garder /usr/local détenu par root signifie que seuls les processus qui s'exécutent en tant que root / sudo (ou demander l'utilisateur admin via la boîte de dialogue d'autorisation Apple) peut écrire dans cette zone. Ainsi, un processus de téléchargement doit vous demander un mot de passe avant d'y corrompre des fichiers.

Mais comme vous le dites, cela rend l'ajout de nouveaux programmes plus difficile.

Je suis d'accord pour courir sudo En effet, vous installez les choses moins souvent que vous ne les exécutez, mais vous devez avoir confiance dans le fait que le processus de construction ne modifie pas ce qu'il devrait.

Si vous voulez éviter sudo, j'installerais Homebrew dans le répertoire ~/usr/local et modifiez votre chemin, manpath etc. pour inclure les répertoires qui se trouvent en dessous.

Une meilleure solution consiste à créer un autre utilisateur, par exemple, homebrew et créer un répertoire appartenant à cet utilisateur. Ensuite, installez là en utilisant sudo -U homebrew . Les autres utilisateurs auront l'avantage de ne pas pouvoir écraser d'autres fichiers, car ils ne sont pas exécutés en tant que root et d'autres programmes ne peuvent pas affecter le homebrew. (Je note que le FAQ Homebrew suggère ce nouvel utilisateur si vous êtes dans un "environnement multi-utilisateurs". Je dirais que toute machine Unix, y compris MacOS, est un environnement multi-utilisateurs.)

Cependant, comme le dit le wiki Homebrew, les recettes ne trouvent pas tous les cas de /usr/local et les remplacer par le répertoire choisi, je pense que nous sommes coincés avec /usr/local .

14voto

kenorb Points 11627

Si vous utilisez Homebrew, vous devez donner le droit d'écriture à un groupe spécifique (soit admin o staff ), afin que les fichiers puissent être partagés entre les utilisateurs qui font partie de ce groupe.

Par exemple :

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

Puis assignez les utilisateurs qui doivent avoir accès à brew à ce groupe (vérifiez vos groupes via : id -Gn ).

Ensuite, lorsque vous travaillez avec brew ne l'exécutez pas avec sudo .

Si vous avez toujours un problème d'autorisation, exécutez brew doctor pour résoudre le problème.

9voto

Mark Renouf Points 13128

Pour ce que ça vaut, /usr/local n'est pas considéré comme un dossier "système" par OS X, et sur une toute nouvelle installation de Snow Leopard, ce dossier est vide.

Tout ce qui appartient à Root dans ce dossier est le résultat de sudo make install sur d'autres logiciels, ou donner votre mot de passe après avoir double-cliqué sur une .pkg qui veut déverser des trucs dans /usr/local .

Propriétaire /usr/local a "fonctionné pour moi" sur 2 machines pendant plus d'un an.

Un problème est que si vous avez installé MySQL (sans utiliser Homebrew) et que vous avez chowné ses fichiers, alors il ne sera probablement plus capable de voir ses bases de données (vous devrez donc les chowner à nouveau à l'utilisateur sous lequel MySQL est exécuté).

7voto

Yuhao Zhang Points 307

Comme dans Homebrew 1.0.0 :

Homebrew n'a plus besoin d'avoir la propriété de /usr/local. Si vous le souhaitez vous pouvez rendre à /usr/local sa propriété par défaut avec : sudo chown Root:wheel /usr/local

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