Linux パーミッションを設定する

パーミッションとは、フォルダやファイルのアクセス権限のことです。
開発環境を設定するとき、データベースを作成するとき、インストールしたソフトウェアを使用するとき。
私のように勉強始めたてでも、いろんな場面に「パーミッション」が出てきてつまづいてきたので、一度きちんとまとめておこうと思います。

パーミッションについて

パーミッションについてもう少し詳しく見ていきます。
パーミッションとは、Linuxを含むUnixで扱われるファイルやディレクトリのアクセス権の設定のことです。
ファイルやディレクトリは扱う所有者、グループ、その他の3種類毎に、実行できるか、書き込み変更ができるか、読み込みができるか、という3種類のアクセスの可・不可を設定できます。

パーミッションはセキュリティのためにとても重要です。
一般ユーザはシステムに書き込みが出来ないようになっています。不意な誤動作をしてもシステムに与える影響を最小限とするためです。
他にも、本番環境にあるWebサイトを誤って編集してしまったということが無いように、責任者以外は本番環境のWebサイトを編集できないようにすることなどができます。

パーミッションの確認

ターミナルで「ll」または「ls -l」を実行します。

-rw-r--r-- 1 ken users 0 12月 22 16:28 myfile.txt
①-rw-r--r-- ②1 ③ken users ④0 ⑤12月 22 16:28 ⑥myfile.txt

上記のように表示されたとします。 こちらを一つずつ読んでいきます。

パーミッション情報
パーミッションの基礎情報。所有者、グループ、その他のユーザに対してのアクセス権限が表記される。

②リンクされている数、サブディレクトリの数
この場合ハードリンクの数を示している。ディレクトリの場合ディレクトリ内のサブディレクトリ数となる。

③所有者やグループ情報

④ファイルサイズ
何もせず単に「touch」コマンドでファイルを作成すると「0」バイトとなる。viなどで編集し保存すれば数値が変化する。

⑤日時
一般的なタイムスタンプとなる。更新日時が表記されるようになっている。

⑥ファイル名

権限の見方

-rw-r--r--   読み出し可能なファイル。所有者だけが書き込み可能
-rwx------  実行可能なファイル。所有者以外のアクセスはすべて不可
-rwxrwxrwx  すべてのユーザーが,すべての操作を行える
-rwxrwxr-x  所有者とグループ・ユーザーのみ書き込み可能
-rwsrwxr-x  ファイルを実行する際,所有者の権限で実行する
-rwxrwsr-x  ファイルを実行する際,グループの権限で実行する
-rwTrw-rw-  全てのユーザーがファイルの変更はできるが,削除やファイル名の変更は所有者のみが行えるファイル
drwxr-xr-x  ディレクトリ。他のユーザーは書き込み不可
drwx------  プライベートなディレクトリ
drwxrwxrwt  すべてのユーザーがディレクトリ内のファイルを作成・変更できるが,削除やファイル名変更は所有者のみが行えるディレクトリ
lrwxrwxrwx  シンボリック・リンク。パーミッションはリンク先のものを引き継ぐ


r    読み出し可能。マイナス(-)の場合は読み出し不可
w   書き込み可能。マイナス(-)の場合は書き込み不可
x   実行可能。マイナス(-)の場合は実行不可
t   ディレクトリへのスティッキ・ビット。所有者のみがディレクトリ内のファイル名の変更,削除を行える
T   ファイルへのスティッキ・ビット。所有者のみがファイル名の変更,削除を行える
s   セットID。その他のユーザーがファイルを実行する際,所有者またはグループの権限で実行する


rwx  7(=4+2+1)
rw- 6(=4+2)
r-x 5(=4+1)
-wx 3(=2+1)
r-- 4
-w- 2
--x 1
--- 0

パーミッションの変更

パーミッションの変更にはchmodコマンドを使用します。

chmod モード 対象ファイル名


例えば、

$ chmod 764 hoge.txt

上記の「764」は
所有者に対して「読み取り」「書き込み」「実行」
所有グループに対して「読み取り」「書き込み」
その他「読み取り」を付与しています。


変更対象、変更方法を指定してコマンドを実行することもできます。

変更対象 意味
u ユーザー
g グループ
o その他
a すべて
変更方法 意味
= 指定した権限にする
+ 指定した権限を付与する
- 指定した権限を除去する

hoge.txtに対して所有者の実行権限を付与する場合

$ chmod u+x hoge.txt

複数指定もできます

$ chmod go+w hoge.txt

合わせて使える!便利なオプションコマンド

-v --verbose コマンド実行の診断結果を表示する

-c --change コマンドの実行結果、変更があった場合のみ、結果を表示する

-R --recursive 複数ファイルに対して設定する場合、ディレクトリ内も設定対象とする

関連コマンド

chgrp ファイルやフォルダのアクセスできるグループを設定する

chown ファイルやフォルダの所有者を設定する

適正なパーミッションの設定

パーミッションによってはサイトの乗っ取りや改ざんが行われ、悪さをされてしまう恐れがあります。 設定を見直すことで安全性を強化することができます。
パーミッション設定は、環境や運用面などで適切な設定は変わってきます。 サイトなどを参考に適正なパーミッションの設定をしましょう。

また、パーミッションを「777」「666」などに設定した場合、「誰でも書き込める」状態になっています。 使用するときにはくれぐれも注意が必要です。