J'utilise HomeBrew pour mes besoins en matière de port (semble un peu plus «propre» que MacPorts).
Je peux installer sans sudo
ing (ce qui est génial), mais l’étape de liaison semble en avoir besoin ( /usr/local/share/man/man3
appartient à root
).
Un guide que j'ai trouvé suggère chown /usr/local
de le faire récursivement
sudo chown -R `whoami` /usr/local
Est-ce sûr ou… est-ce une mauvaise idée?
Aussi: 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
sudo chown -R :admin /usr/local
. De cette façon, cela fonctionnera de la même manière pour tout utilisateur administrateur de la machine. Cependant, vous devrez peut-être également vous exécutersudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
pour vous assurer que le groupe dispose du même accès en écriture que l'utilisateur.Réponses:
Il est généralement préférable de garder les autorisations aussi strictes que possible. Garder la
/usr/local
propriétéroot
signifie que seuls les processus qui s'exécutent en tant queroot
/sudo
(ou demandent à l'utilisateur administrateur via la boîte de dialogue d'autorisation Apple) peuvent écrire dans cette zone. Ainsi, un téléchargement de processus doit vous demander un mot de passe avant de corrompre des fichiers.Mais comme vous le dites, il est plus difficile d’ajouter de nouveaux programmes.
Je suis en mesure d’exécuter
sudo
, car vous installez des choses moins souvent que de les exécuter, mais vous devez être certains que le processus de construction ne change rien du tout.Si vous voulez éviter le sudo
~/usr/local
, j'installerais Homebrew et modifierais votre chemin, manpath, etc. pour inclure les répertoires en-dessous.Un meilleur moyen consiste à créer un autre utilisateur, par exemple,
homebrew
et à créer un répertoire appartenant à cet utilisateur. Ensuite, installez là en utilisantsudo -U homebrew
. Les autres utilisateurs auront l’avantage de ne pas pouvoir écraser d’autres fichiers, car ils ne fonctionnent pas en tant queroot
et les autres programmes ne peuvent pas affecter l’homebrew. (Je remarque que la FAQ Homebrew suggère ce nouvel utilisateur si vous êtes dans un "environnement multi-utilisateur". Je dirais que toute machine Unix, y compris macOS, est un environnement multi-utilisateur)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 soupçonne que nous sommes coincés avec/usr/local
.la source
$PATH
et$MANPATH
inclure les annuaires d'utilisateurs. Si les programmes installés ne nécessitent pas d'installation à l'échelle du système, c'est une bien meilleure alternative.brew doctor
(suggéré ci-dessous) m'a dit que je n'avais qu'à chown les répertoires d'hommes partagés ... assez sûrs pour moi.J'utilise aussi Homebrew et peux confirmer que c'est totalement sans danger. Citant la page Installation de la FAQ officielle de Homebrew :
Je vais juste ajouter que faire des choses en tant que root est une très mauvaise idée , donc
chown
ing/usr/local
non seulement me semble raisonnable (ce n'est pas un système dir sur Mac OS X), mais sain d' esprit .Vos autorisations ne sont pas correctes (pas encore). Il suffit d’exécuter la commande que vous avez énumérée et tout ira bien.
Si vous avez d'autres problèmes, rappelez-vous, ils
brew doctor
peuvent vous aider!la source
brew doctor
c'est tout simplement génial.Si vous utilisez Homebrew, vous devez donner l'autorisation d'écriture à un groupe spécifique (un
admin
ou plusieursstaff
), afin que les fichiers puissent être partagés entre les utilisateurs appartenant à ce groupe.Par exemple:
Puis assignez les utilisateurs qui devraient avoir accès à la
brew
commande à ce groupe (vérifiez vos groupes via:)id -Gn
.Ensuite, lorsque vous travaillez avec
brew
, ne le lancez passudo
.Si vous rencontrez toujours un problème d’autorisation, exécutez-le
brew doctor
pour résoudre le problème.la source
su myAdminUser
, puis tout fonctionne comme prévu. Mais bien sûr, cette solution ne donnera aucune sécurité aux personnes qui, de toute façon, exécutent déjà un utilisateur administrateur à tout moment.Pour ce que cela vaut,
/usr/local
n’est pas considéré comme un dossier "système" par OS X, et sur une nouvelle installation de Snow Leopard, ce dossier est vide.Tout contenu appartenant à la racine dans ce dossier est le résultat d'un
sudo make install
autre logiciel ou donne votre mot de passe après un double-clic sur un.pkg
fichier qui veut transférer des éléments dans/usr/local
.Owning
/usr/local
a "travaillé pour moi" sur deux machines pendant plus d'un an.Un des pièges est que si vous avez installé MySQL (sans utiliser Homebrew) et chown ses fichiers, il ne sera probablement plus en mesure de voir ses bases de données (vous devrez donc les restituer à l'utilisateur sous lequel MySQL est exécuté). .)
la source
/usr/local/bin
la$PATH
valeur par défaut est toujours présente , et tout ce que vous y mettez peut être utilisé par d'autres utilisateurs aussi et devrait être approuvé . Si tout le/usr/local/
répertoire possède les mêmes autorisations que celles/usr/local/share/man
actuellement accordées à la configuration de l'OP, n'importe qui peut modifier n'importe quel fichier binaire à l'aide d'un scriptrm -rf ~
./usr/local
devraient être correctes. (Mais vous utilisez probablement Postgres de toute façon. :))Comme dans Homebrew 1.0.0:
la source
brew update
, qui nécessite toujours la propriété de/usr/local
. Je vais essayer de restaurer les autorisations par la suite.Je pense qu'il est OK pour les utilisateurs d'avoir les permissions d'écriture à
/usr/local
- après tout, cela signifie que vous ne l' utilisezsudo
sur chaque script de compilation. Je n'aime pas l'idée d'un utilisateur ordinaire possédant/usr/local
. Je préférerais que root (ou similaire) soit propre/usr/local
, mais que je modifie les autorisations pour que les utilisateurs (ou au moins certains groupes privilégiés) puissent y écrire. Cela semble être l'approche conceptuellement correcte.la source
/usr/local/bin
peut très bien être à l’avant de $ PATH pour la plupart des utilisateurs. Rendre le répertoire accessible en écriture au monde ouvre de nombreuses failles en matière de sécurité.sudo
, ou vous accordez des autorisations d'écriture à certains utilisateurs/usr/local
. Je considérerai le troisième comme moins risqué ... à moins que vous ne connaissiez une meilleure solution.~/brew
ou partie. Le problème, cependant, est que, contrairement à Ruby, qui est assez autonome, de nombreux utilitaires * nix s'attendent à se trouver/usr/local
.../usr/local
n’est pas accessible en écriture: j’ai plutôt un groupe de confiancehomebrew
(pas seulement un administrateur) doté d’autorisations en écriture (autorisations étendues telles que0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
totalement rock). C’est le meilleur compromis que j’ai pu comprendre: passudo
de scripts de construction, mais un certain contrôle/usr/local
./usr/local
). Faire beaucoup de chalutage sur SO et d'autres sites, voir les arguments concernant le déplacement de Homebrew dans le dossier de départ de l'utilisateur plutôt que de rester dans/usr/local
, changer de propriétaire et / ou de groupe/usr/local
ou non, etc., il est difficile de dire s'il y en a. solution universellement acceptable. Avez-vous un article de blog ou un article à ce sujet, ou pourriez-vous donner une explication plus profonde quelque part?