[Unix系OS] [chmod]パーミッションとは?パーミッションを数値で指定

投稿: 2023/11/3
ドキュメント

パソコンにあるファイルやディレクトリを扱う上で、**パーミッション(Permission)**を適切に設定しないと、プログラムが正しく実行されなかったり、最悪、情報漏洩などを引き起こしたりすることがあります。

ターミナルでのコマンド入力作業中、パーミッション設定変更に手間取ったことがあり、今後のために、パーミッションの概要・表示方法・見方・チートシートなどを備忘録としてまとめてみました。

パーミッションとは?

Unix系OSでは、ファイルパーミッションやアクセスモードは非常に重要な役割を果たします。これらのパーミッションは、ファイルやディレクトリに対するユーザーやグループのアクセスを制御するために使用されます。正しく設定されていないと、セキュリティリスクにつながる場合があります。

パーミッションの基本

ファイルのパーミッション

ファイル:パーミッション表記意味
読み取り**(read)**:rファイルを読み取る権限
書き込み**(write)**wファイルにデータを書き込むまたはファイルを削除する権限
実行 (execute)xファイル(プログラムやスクリプトなど)を実行する権限
権限なし-

ディレクトリのパーミッション

ディレクトリ:パーミッション表記意味
読み取り**(read)**:rディレクトリ内のファイル名リストを読み取る権限
書き込み**(write)**wディレクトリ内でのファイルの作成、削除を許可
実行 (execute)xディレクトリ内のファイルやサブディレクトリにアクセスする権限
権限なし-

ディレクトリの実行権限が自分にあれば、そのディレクトリに入ることができますが、ディレクトリの実行権限がなければディレクトリに入ることはできません。

ユーザークラス

上記のパーミッションは、3つの異なるクラスのユーザーに対し割り当てることができます。

所有者 (user)ファイルを作成したユーザー
所有グループ (group)ファイルの作成者が属するグループ
その他 (others)その他全員

これらを組み合わせることで、特定のユーザーやグループに対する細かなアクセス制御が可能です。

パーミッションの表示

ターミナルにて**ls -l コマンド**を使用すると、ファイルパーミッションを確認できます。

ls -l

出力例は以下の通りです。

-rwxr-xr-- 1 user group 12345 Jan 23 12:34 example.txt

出力例の行は以下の情報を表しています:

-rwxr-xr—ファイルパーミッション
1リンクの数
userファイルの所有者
groupファイルの所有グループ
12345ファイルサイズ(バイト)
Jan 23 12:34最終更新日時
example.txtファイル名

パーミッションの見方

上述の-rwxr-xr--がパーミッションと言われるもので、それぞれの文字は以下を表します。

  • 最初の1文字 : ファイルの種別

    • 「d」はディレクトリ、「-」はファイル
  • 24文字目, 57文字目, 8~10文字目 : それぞれ3つの異なるクラスのユーザーに対する権限を表しています。

    • 2~4文字目 : 所有者のパーミッション

    • 5~7文字目 : 所有グループのパーミッション

    • 8~10文字目 : その他全員のパーミッション

これを出力例 -rwxr-xr-- で考えると、

  • 最初の1文字- : ファイル

  • 2~4文字目rwx : 所有者(読み取り、書き込み、実行)

  • 5~7文字目 r-x : 所有グループ(読み取り、実行)

  • 8~10文字目 r-- : その他全員(読み取りのみ)

というパーミションが設定されていることがわかります。

パーミッションの変更

各ユーザークラスに対するパーミッション設定するには、chmodを使い、3桁の数値を組み合わせて設定できます。最初の桁は所有者のパーミッション、2桁目はグループのパーミッション、そして3桁目はその他のユーザのパーミッションです。_(chmod は change mode の略で,ファイルやディレクトリのパーミッションを変更するコマンドです。)_

コマンド例(chmod xxx ファイル名)

chmod 644 example.txt

重要なのは3桁の数値で、以下権限の数値の合計となっています。

  • 権限:数値
    • 読み取り可能:4

    • 書き込み可能:2

    • 実行可能  :1

したがって、このコマンド例は、ファイル「example.txt」に対し、所有者に読み取りと書き込みの権限を与え、グループとその他のユーザーには読み取りのみの権限を与えるたい場合のコマンドとなります。

合計数値読み取り r書き込み w実行可能 x
所有者(owner)6(4+2+0)-rw-
所有グループ(group)4(4+0+0)--r—
その他ユーザー(others)4(4+0+0)--r—

以下は、chmod コマンドを使用した際の主要な数値とそれに対応するパーミッションのチートシートです。

パーミッションのチートシート

基本的なパーミッション数値

0何の権限もなし---
1実行のみ—x
2書き込みのみ-w-
3書き込みと実行-wx
4読み取りのみr—
5読み取りと実行r-x
6読み取りと書き込みrw-
7読み取り、書き込み、実行rwx

chmod コマンド 例

数値所有者グループ他のユーザー
700全ての権限権限なし権限なし
755全ての権限読み取り・実行読み取り・実行
644読み取りと書き込み読み取りのみ読み取りのみ
600読み取りと書き込み権限なし権限なし
666読み取りと書き込み読み取りと書き込み読み取りと書き込み
400読み取りのみ権限なし権限なし
444読み取りのみ読み取りのみ読み取りのみ

注意事項

  • 注意事項として、パーミッションは、正しく設定されていないと、悪意のある第三者にファイルを不正に見られたり書き換えられる可能性があります。

  • そのため、権限を設定する際は、**必要最小限の権限をユーザーに与えることで、セキュリティリスクを減らします。**例えば、特定のユーザーがファイルを読み取る必要があるだけの場合、そのユーザーに書き込み権限を与えるべきではありません。