rcmdnk's blog
Last update

Sophos_200_200

この前、Macで /usr/local/binの所有権が勝手に変わってしまって困っている という事を書きましたが、 一応原因が分かって回避できる様になったのでそれについて。

起こっていた問題

El CapitanからはSIPと呼ばれる新たなセキュリティーシステムが導入されていて、 これによって/usr以下は通常rootでも操作出来ないようになりましたが、 /usr/local以下だけはこのディレクトリがあれば この保護から外して使う事が出来ます。

El Capitanにアップデート後、

$ sudo chown -R $(whoami):admin /usr/local

によって/usr/local以下を全てユーザー所有にしていたにも関わらず /usr/local/bin及び/usr/local/shareの所有者が、 ユーザーのものにしておいてもしばらくするとroot所有になってしまっていました。

このままだとHomebrewによるパッケージのインストールに失敗してしまったりして 困るので、 取り敢えずsudo crontab -eでrootのcronジョブとして、

# Update authorities of /usr/local/bin and share, as it seems ownerships of them automatically changed to root.
*/5 * * * * if ls -l /usr/local/|grep root|grep -q root;then (ls -l /usr/local;/usr/sbin/chown -R user:admin /usr/local/bin/;/usr/sbin/chown -R user:admin /usr/local/share;fi

な感じの事をして、無理やり定期的にユーザー所有に戻していました。

原因

原因はアンチ・ウイルスソフトのSophosでした。

Sophosはsweapというコマンド等を/usr/local/bin等にインストールするのですが、 この際、インストールするディレクトリごと 所有権をrootのものにしてしまっている、とのこと。

‘sweep’ command installs itself into /usr/local and changes permissions, wreaking havoc on Homebrew - Sophos Anti-Virus for Mac Home Edition - Free antivirus & tools for desktops - Sophos Community

Sophosのコマンド自体は管理者権限でのみ使える様にroot所有にする必要がある、 とのことですが、何故かディレクトリ毎変更しています。

上のリンクでは中の人もコメントを返していますが、 そもそも何故ディレクトリごと変更する必要があるかと言う話で、 返信もなんか的外れな感じで後からも指摘されていますが、 一応数週間の間には直す、とのこと。

上のポストは9月が最初なので、 SophosがEl Capitanの配布に向けて下手なアップデートを入れた、と言う感じでしょうか? (brew upgradeとかがいつから失敗してたのかきちんと把握してないのであれですが、 もしかしたらYosemiteの時でもこの問題に当たっていたのかも。。。)

ということで、実際Sophosをアンインストールしてみると この現象は消えてくれました。

また、Sophosを再インストールしてみると 即座に/usr/local/bin/usr/local/shareの所有権がrootになりました。

恐らく、最初にインストールする時に加え、 Sophosのアップデートのたびに所有権の変更が行われてたのだと思います。 (ウィルス定義のアップデートなどもあるので4時間とかそのくらいで丁度そのタイミングくらいでした。)

再起動するとすぐアップデートがかかったりするので、 再起動時に変わってしまう!と言ってる人も居るのかと。

ちなみに、この原因を特定するために、 fs_usage: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/fs_usage.1.html という、ファイルシステムへのアクセスを全て調べるコマンドを 使ったり色々してる人たちも居ました(これも9月時点)。

osx - How to figure out what is causing the ownership of /usr/local to change from my-username to root - Ask Different

Homebrewでも2日くらい前にIssuesになってました。

El Capitan Permissions Set Back · Issue #44801 · Homebrew/homebrew · GitHub

ここでは、やっぱり/usr/localは使いづらいから他に置きたいね、 という話にもなってます。

まとめ

というわけで、原因はSophosでしたので、アンチウィルスどうしようか、ということですが、 差し当たりSophosを消して、特に他のは入れずに、で良いかな、と言う状態です。

Sophosは上の問題が見つかったQUESTIONのページで すぐに対応してないのとそもそも意味分からないことやってるので 治っても使わないかな、、、と言う感じが。

他の物を入れたほうが良いかな、と言うこともあるのですが、 SIPで強化されたし無理に他のを入れなくても良いのでは、と思っています。

追記: 2015/12/06

上記のバグを直した物がリリースされたみたいです。

追記ここまで

Sponsored Links
Sponsored Links

« パスワード管理サービスのLastPassがLogMeInに吸収された件 Bluetooth ワイヤレスイヤホン Q9A »

}