Just do IT

思うは招く

Vagrant + Linux で rails new をして Permission denied @ dir_s_mkdir エラーが出る

環境

問題

vagrant@contrib-buster:~/workspace$ bin/rails new sample -d postgresql

をしても、以下のエラーが出る。

Permission denied @ dir_s_mkdir - /home/vagrant/workspace/sample (Errno::EACCES)

Permission denied ということは、実行権限がないのが原因。 ただし、sudo をつけてもダメだった。

解決

  • rails new しているディレクトリに実行権限がなかった。(rootになっていた)
  • ユーザー(ここではvagrant)に実行権限を与える

権限をチェックする。

vagrant@contrib-buster:~$ ls -la

~
~
# やはりroot権限になっている
drwxr-xr-x  3 root root    4096 Mar 27 20:51 workspace

workspace ディレクトリへ移動し、ユーザーネーム vagrant に権限を付与する。

vagrant@contrib-buster:~/workspace$ sudo chown -R vagrant .

これで解決した。

解決の糸口になったこと

ひとつ上の階層にいくと、rails new が実行できたことからヒントを得た。

# これだとできた
vagrant@contrib-buster:~$ rails new sample -d  postgresql

ホームディレクトリには実行権限がある。ということは、workspace ディレクトリには権限がないと考えた。

参考