起きたこと
Djangoプロジェクトの settings.py を開こうとしたところ、以下のエラーが発生した。
Permission denied
エディタ(vim / VS Code)から 閲覧すらできない状態。
原因
ファイルの所有者が自分ではなく、root になっていた。
$ ls -l settings.py
-rw-r----- 1 root root settings.py
- 所有者:root
- 自分のユーザー:vboxuser
- vboxuser には読み取り権限がない
→ そのため Permission エラーが発生していた。
解決方法
chown コマンドで、ファイルの所有者とグループを自分に戻した。
$ sudo chown vboxuser:vboxuser settings.py
コマンドの意味
chown ユーザー名:グループ名 対象ファイル
- 所有者 → vboxuser
- 所有グループ → vboxuser
修正後の状態
$ ls -l settings.py
-rw-r--r-- 1 vboxuser vboxuser settings.py
無事にファイルを閲覧・編集できるようになった。
chmodではダメなのか?
一見すると以下でも直りそうに見える。
$ chmod 644 settings.py
しかしこれは 権限(rwx)を変更しているだけ で、
- 所有者・グループは
rootのまま - 根本原因は解決していない
→「誰のファイルか」を直すにはchownが必要
まとめ
- Permission denied の原因は ファイルの所有者・グループが自分でないこと
-
chmodは権限変更、chownは所有者変更