Vagrant環境でsu, sudoコマンドでrootになれなくなった〜きっかけはnpmでpermission denied〜


ローカルのVagrant環境をいじっていたらsuコマンドもsudoコマンドもエラーになってしまい、めちゃめちゃ焦った話。

結論から言うと開発環境を作り直すことになったので、自戒も込めてここに投下します。

環境

  • Vagrant 2.1.2
  • CentOS Linux release 7.5.1804

rootログインエラーになる理由

npmでPermission Deniedだなんだと怒られたので、原因を検索して見つけたこんなコマンドをなんの気なしに打ってみました。

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

それでもnpmはエラー。

しかもVagrantがシャットダウンも起動もできない。

調べてみるとどうも/usr/bin以下の権限がrootから変わってしまった模様。。。

$ ll /usr/
dr-xr-xr-x.  2 hogehoge root 28672  3月 23 08:37 bin

su、sudoコマンドの権限まで変わってしまったのが問題ぽい。

$ ll /usr/bin/
︙
-rwxr-xr-x.   1 hogehoge root       32184  4月 11  2018 su
---x--x--x.   1 hogehoge root      143184  4月 11  2018 sudo

この状態でrootログインしようとするとエラーになってしまう。

$ su -
Password: 
su: Authentication failure

いろいろ調べてみたんだけど、root権限になれない時点で何もできず。
環境を作り直すのが一番良さそうという結論に。。。

はーーーVagrant上でよかった。。。
Mac上とかでやってたらやばかったかも…。

見かけたコマンドをなにも考えずに叩いてしまうのはよくないですね。