LoginSignup
0
1

More than 5 years have passed since last update.

macOS Sierra で sudo -ufoo brew したい

Last updated at Posted at 2017-02-20

前提

筆者の PC のスペック。

  • OS: macOS Sierra
  • ユーザーアカウント: 以下の2つ
    • 管理者 (以下 admin) ※ root とは別物
    • 通常使用 (以下 myuser)
  • Homebrew: Yosemite 時代にインストールした(と記憶している)ものを使い続けてます

Homebrew 使用時だけ、通常使用アカウントのターミナルから sudo -uadmin brew などとして使用していました。


悩み事

Sierra にアップグレードして久しいある日、 brew install しようとしたら以下のエラーが発生しました。

$ sudo -uadmin brew install bar
Error: Permission denied - /Users/myuser/Library 

エラー文でググっても有力な情報が見つからなかったので formulae をメモって再インストール。

note-formulae
brew list > ~/Desktop/formulae.txt
reinstall
sudo -uadmin ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
sudo -uadmin ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

(※最新のインストールコマンドは公式を参照)

アンインストールはうまくいったっぽいのですが、(再)インストール時に以下のようなエラーが出て失敗してしまいました。

warning: unable to access '/Users/myuser/.config/git/attributes': Permission denied 

原因

ググって出てきた情報を改めてじっくり眺めていたら、以下の記事が参考になりました。

どうやら sudo するときに環境変数 $HOME が元のユーザーのままだったのがいけなかったらしいです。
sudo するときに $HOME の定義が元のままだと、 admin ユーザーの権限で myuser のホームディレクトリを参照しちゃうってことですね。

$ echo 'echo $HOME' | sudo -uadmin bash
/Users/myuser

解決方法

なんとかする方法ないかと man sudo して 'HOME' を検索…っと、ありました!

(以下 man 8 sudo から引用)

-H, --set-home
Request that the security policy set the HOME environment variable to the home directory specified by the target user's password database entry. Depending on the policy, this may be the default behavior.

つまりはこういうこと

$ echo 'echo $HOME' | sudo -uadmin bash
/Users/myuser
$ echo 'echo $HOME' | sudo -H -uadmin bash
/Users/admin

というわけで brew するとき以下のようにしたらちゃんと動きました。

install
sudo -H -uadmin ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

(※最新のインストールコマンドは公式を参照)

use
sudo -H -uadmin brew doctor
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1