Homebrewの権限と更新を作成する必要がある複数のユーザー


79

Homebrewを使用して、Lionでのパッケージインストールを管理しています(Lion Serverは実際ですが、これは問題ではありません)

Homebrewは1人のユーザーの下にインストールされました。今、別のユーザーがパッケージを追加したいと思いますが、Homebrewは満足していません。

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

これは悪いと思われますか?/usr/local/インストールに使用する利点の1つは、必要ないことだと思いましたsudo。しかし、明らかにそうです。

Homebrewを変更する必要があるすべてのユーザーは、adminグループのメンバーです。だから、chmod -R g+w /usr/local/これが何かを悩ませるか、セキュリティ上の問題を引き起こすことを恐れることができますか?!?

助言?

$ 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

回答:


100

これは悪いと思われますか?インストールに/ usr / local /を使用する利点の1つは、sudoが必要ないことだと思いました。しかし、明らかにそうです。

Homebrewは、デフォルトで、にシングルユーザーアクセスできるように設定します/usr/local。したがって、複数のユーザーが管理するために、ディレクトリツリーのアクセス許可を開く必要があります。

ここでsudoを実行してhomebrewを管理する必要はありません。いくつかの許可を変更するだけです。あなたがすでに持っているので:

Homebrewを変更する必要があるすべてのユーザーは、adminグループのメンバーです。

さらに2つのことを行う必要があります。

  1. 以下のすべて/usr/localがグループに属していることを確認してくださいadmin。そして
  2. グループの誰adminもがの下にあるものに書き込みできることを確認してください/usr/local

この場合、行う変更は次のとおりです。

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

また、adminグループのすべてのユーザーは、マシン上のhomebrewインストールを管理できる必要があります。ユーザーを管理グループに追加する必要がある場合は、次のように実行できます。

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

(そのユーザーは、特権を付与するために再度ログインする必要があります)。

マシンの健全性のために、Homebrewの独自のフォーク作成することを検討、ローカルのhomebrew gitリポジトリがローカルのフォークを指すようにすることができます。それにより、環境に合わせてHomebrewをカスタマイズし、brewコマンドでインストールできるパッケージのバージョンを制御できます。複数の人がインストールを行うと、バージョンの問題や依存関係の問題が発生する可能性があります。


1
私は同じ問題を抱えており、提案されているようにグループ所有権とグループ許可を変更しました。ここでファイルに書き込むことができることを手動で確認できたとしても(たとえばを使用して)brew doctor、たとえば/usr/local/include書き込み不可であることに不満を抱いていますecho "hello" > /usr/local/include/testfile。私は管理者グループのメンバーです。デバッグのアイデアはありますか?
mgd

2
このソリューションはうまくいきましたが、Homebrewのローカルキャッシュには対応していません。私はまた、実行中のお勧め:chmod -R g+w /Library/Caches/Homebrew
ドリューダラ・エイブラムス


2
Homebrewがキャッシュを現在のユーザーのディレクトリに移行したようです。ちょうど見た:==> brew updateを行うときに/ Library / Caches / Homebrewを/Users/bluechain.admin/Library/Caches/Homebrew ...に移行する。これを正しく解釈していれば、これはHomebrewのグローバルに書き込み可能なキャッシュディレクトリがあることを心配する必要がなくなったことを意味します。
エンダレス

この問題を抱えるHigh Sierraユーザーの場合sudo chown -R $(whoami) $(brew --prefix)/*、上記のコマンドの代わりにこれを使用する必要があります。ここ
ジェフクラネンブルク

7

adminグループまたは他のユーザーグループを介して、複数のユーザーのhomebrew権限を有効にできます。これを設定するためのわずかに拡張されたレシピを次に示します。

グループは、ローカルhomebrewインストールディレクトリを管理する必要があります。したがって、/ usr / local管理グループ(または好みのグループ)に割り当て、グループの書き込み許可を有効にします。

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

グループには、/ Library / Caches / Homebrewにあるhomebrewの数式とソースファイルのローカルキャッシュに対する権限も必要です。

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

複数のアカウントからhomebrewを使用しているときに、さらに同様の権限の問題が発生した場合は、問題のあるパスをメモし、同じアプローチを試してください。

Leif Hanackは同様のソリューションをブログに書いており、その目的のために専用のユーザーグループbrewを作成および構成しています。

-アップデート2015-08-20

最近、この回答を再度使用して、自作アクセスのゲストアカウントを設定しました。2番目の管理者アカウントからCaskを使用するには、次のコマンドも実行する必要がありました。

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

4

私は受け入れられた答えについてコメントするつもりでした(しかし、まだその評判はありません。)

Caskroom.ioのユーザーとして、以下を追加することもお勧めします。

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

homebrewの非常に便利な拡張機能であるcaskは、すべてのファイルを /opt/homebrew-cask


1
/opt私はあなたが意味を推測しますか/usr/local/opt自作をインストールした後でも、OS Xがインストールされ、最近では存在しません。
forquare

2016年6月、Homebrew-Cask(醸造拡張機能)はCaskroomフォルダーのデフォルトの場所を/usr/local(より正確に$(brew --prefix))に移動した/opt/homebrew-caskため、この回答は今では意味がありませんが、記述された時点で有効でした。デフォルトのキャスクルームの場所
zen

1

パスに許可を与える必要があります。これをコマンドラインで実行すると、問題ありません。それは私のために働いた:

sudo chown -R $ USER / usr / local


0

私はグループの許可を設定することに投票します-私にはそれがまさにそれが目的であり、セキュリティ上の問題を引き起こすべきではないようです。

  • sudoを使用しないでください。

tl; dr Sudoは危険であり、とにかくsudoなしでTextMate.appをインストールしました。

Homebrewは、sudoを使用せずに動作するように設計されています。使用することもできますが、使用しないことを強くお勧めします。sudoを使用してバグに遭遇した場合、それが原因である可能性があります。sudoを使用せずにHomebrewを最初から再インストールした後、再現できる場合を除き、バグレポートを提出しないでください。


だから、あなたのアドバイスはsudo chmod -R g+w /usr/local/
メルテミ

はい。ただし、次のいずれかを使用してセカンドオピニオンを求めることができます。IRC(irc://irc.freenode.net/#machomebrew); メーリングリスト(homebrew@librelist.com); Twitter(twitter.com/machomebrew
iolsmit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.