システムワイドな rbenv の SecurityError

問題発生

最近 Linux 環境を再構築しています。

その際 rbenv をシステムワイドな形式でインストールしたのですが、 gem を実行すると以下のエラーを出すようになりました。

どういう意味だろう。

冷静に読めばそのまんまの意味なのですが、以前とまったく同じ方法でのインストールで発生したのでプチ混乱。検索しても日本語でのトラブルシューティングは見つからず、最終的に以下の記事に辿り着きました。

debian – Capistrano Ruby Security Error – Stack Overflow

同じエラー内容での相談。

その回答から一部を引用します。

Is it a shared (system-wide) install of rbenv? Old instructions (deleted from wiki as of now, but can be accessed at https://github.com/sstephenson/rbenv/wiki/Shared-install-of-rbenv/a86ef2e6b12254eeb7cecfd3bd878cf7382d1b4a) suggests setting SGID permission bit on Ruby interpreter, which triggers security warnings (and with a good reason).

リンク先にあるものは rbenv のシステムワイドなインストール記事でよく見かける内容のものです。自分もこれと同じ方法でインストールしました。しかしこの rbenv の wiki にあった記事は現在削除されており、通常の方法で見ることはできません。

要約すると、この有名な方法は既に古くなっていたようで、記事にある SGID 権限の設定によりセキュリティ上の問題を招いてしまっていたようです。

解決

既にインストールしている場合

要は SGID 権限が問題を起こしているので、それを外してやればいいだけです。

今のところ、これで問題は起きていません。

これからインストールする場合

上記リンク先の「古い方法」にある作業内容のうち、 chmod -R g+rwxXs rbenv の部分を chmod -R g+rwxX rbenv に書き換えればいいだけです。

感想

すんなり通り過ぎることを想定している作業につまづくと、どうにも焦りますね。

急ごしらえ的に修正したものの、今回のようにエラーが出てしまうことを考えると無理にシステムで共有しない方がいいのかもしれません。

公式の wiki 記事が削除されたことから察するに、おそらく現在は非推奨なのでしょうし。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です