[Linux]パーミッションの確認や変更まとめ
ファイルやディレクトリには作成したユーザーやそのユーザーが所属するグループが権限を持ちます。
実行したいのにエラーが起きる、DBに書き込むスクリプトを実行したのにエラーが起きる。
このようなケースの場合、パーミッションが原因であることが多いです。
今回はそのパーミッションについてまとめました。
アクセス権は3つある
ファイルやディレクトリを作成すると、それぞれにアクセス権が設定されます。
アクセス権は以下の3つで
- 読み取り可
- 書き込み可
- 実行可
この3つとなり、それぞれがr/w/xで表されます。
実際にファイルのアクセス権を確認するには以下のコマンドで確認可能です。
$ ls -l ファイル名 -rw-r--r-- 1 root root 31 11月 12 11:23 ファイル名
上記ですと、3つに区分されます。
– rw-/r–/r–
左から順に、rootユーザーは読み取り可、書き込み可
rootユーザーが所属するグループは読み取り可
その他ユーザーは読み取り可
といった具合です。左から見てユーザー/グループ/その他ユーザーとなり、その後に実際のユーザー(上記ではrootユーザー)がアクセス権を確認することができます。
具体的な事例で言うと、Pythonで任意のサイトをクローリング→DBに登録というスクリプトを書いていましたが、リモート(サーバー上)ではエラーが出るという事例に遭遇しました。
ログを見てみると、データベースへの書き込み権限がないと吐き出されていたので、アクセス権を調べてみると権限がなかったということがありました。
パーミッション系のエラーが吐き出された場合は、一度権限を調べてみるといいかもしれません。
アクセス権を数字で表示
このアクセス権は数字で表示することもできます。
$ chmod 644 hoge.py
このようなコマンドを見たことはありませんか?
これは、hoge.pyのアクセス権を変更するコマンドでしばしば使われます。この機会なのであわせて紹介します。
具体的に言うと、
- r→4
- w→2
- x→1
です。なんのこっちゃですね。掘り下げると、r(読み込み可能)は4という数字で表現でき、w(書き込み可能)は2、x(実行可能)は1というものになり、その合算した数字でアクセス権を表すことができます。
例えば、6という数字はどのようなアクセス権を持つでしょうか?
4 + 2 なので、読み込み可能かつ書き込み可能なアクセス権という意味です。
では、4は?
この場合は、読み込み権だけ持つということになります。
それではもう一度、上記のコマンドを見てみましょう。
$ chmod 644 hoge.py
chmodはアクセス権を変更するコマンドです。
644は左から所有者/グループ/その他ユーザーで表現されます。
つまり、hoge.pyのアクセス権を所有者(読み込み書き込み可)/グループ(読み込み可)/その他ユーザー(読み込み可)に変更したと言えます。
アクセス権の変更コマンド
前後しますが、アクセス権の変更コマンドでよく使うものを紹介します。
先ほども出てきましたが、chmodから。
これはチェンジモードと読みファイルのアクセス権を変更します。
次にchown。チェンジオウン、チェンジオーナーと読みファイルの所有者を変更します。
$ chown django hoge.py
hoge.pyの所有者をdjangoユーザーに変更しています。
最後にchgrp。チェンジグループと読み所有グループを変更します。
$ chgrp hoge hoge.py
hoge.pyの所有者グループをhogeに変更しています。