Linuxのパーミッションと所有権を理解しよう:chmod, chown, umaskの使い方

Linuxを使う上で、ファイルやディレクトリの権限所有権を適切に管理することは非常に重要です。
この記事では、初心者でもわかりやすく、chmodchownumaskといったコマンドを使いながら、
ファイル管理の基礎を学んでいきます。

目次

パーミッションと所有権の基本

Linuxでは、各ファイルやディレクトリに対して、誰が何をできるかという
パーミッション(権限)と、所有者とグループが設定されています。
これによって、ファイルを誰が読み込んだり、変更できるかが決まります。

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

まずは、ls -l コマンドを使って、
ファイルのパーミッションと所有権を確認してみましょう。

ls -l

出力例:

-rw-r--r-- 1 user group 1024 Sep 14 10:00 example.txt

この出力から、次のような情報が得られます。

  • -rw-r–r–:ファイルの権限(パーミッション)
  • user:ファイルの所有者
  • group:ファイルの所有グループ

パーミッションの見方

-rw-r--r-- の部分を3つのグループに分けて読みます。

  1. 所有者(user)の権限:rw-(読み取り&書き込み)
  2. グループ(group)の権限:r--(読み取りのみ)
  3. その他のユーザー(other)の権限:r--(読み取りのみ)

パーミッションの見方を詳しく

-rwxr-xr-- という文字列のパーミッションを確認してみましょう。
これを分解すると以下のようになります。

最初の文字 (-)

  • - は「通常のファイル」を意味します。
  • d は「ディレクトリ」を示します。
  • l は「シンボリックリンク」を示します。

次の9文字 (rwxr-xr–)

この部分は3つのグループに分かれていて、
それぞれユーザー、グループ、その他のユーザーに対するパーミッションを表しています。

最初の3文字 (rwx)ユーザーの権限

  • r = 読み取り (read)
  • w = 書き込み (write)
  • x = 実行 (execute)
  • 例えば、rwx の場合、ユーザーには
    「読み取り」「書き込み」「実行」権限があることを示します。

次の3文字 (r-x)グループの権限

  • r = 読み取り (read)
  • - = 書き込み不可
  • x = 実行 (execute)
  • この例では、グループメンバーには「読み取り」と「実行」のみ許可されていて、
    書き込みはできないということになります。

最後の3文字 (r–)その他のユーザーの権限

  • r = 読み取り (read)
  • - = 書き込み不可
  • - = 実行不可
  • その他のユーザーには「読み取り」しか許可されていません。

chmod:ファイルやディレクトリのパーミッションを変更する

chmod コマンドを使って、ファイルやディレクトリのパーミッションを変更できます。

読み書き権限の追加

たとえば、example.txt書き込み権限をグループにも追加したい場合、次のコマンドを実行します。

chmod g+w example.txt

これで、example.txt のグループに書き込み権限が付与されます。
再度、ls -l コマンドで確認してみましょう。

ls -l

出力例:

-rw-rw-r-- 1 user group 1024 Sep 14 10:00 example.txt

グループの権限が rw- に変更されていることがわかります。

パーミッションの数値表記

chmod コマンドでは、数値(モード値)を使って権限を設定する方法もあります。
たとえば、読み書き実行権限を全ユーザーに与えたい場合は、次のように数値表記で行います。

chmod 777 example.txt

値の意味:

  • 7:読み取り(4)+書き込み(2)+実行(1)= 7
  • 5:読み取り(4)+実行(1)= 5
  • 0:権限なし

数値(777)の左から「所有者/グループ/その他」に対する割り当てがされており
各権限の2進数の組み合わせで権限が決まります。

例えば、

  • 644:所有者は「読み取り」と「書き込み」可能・グループは「読み取り」のみ可能・その他は「読み取り」のみ可能
  • 755:所有者は「読み取り書き込み実行」すべて可能・グループとその他は「読み取り」と「実行」が可能

となります。

chown:ファイルの所有者やグループを変更する

ファイルやディレクトリの所有者グループを変更するには、chown コマンドを使います。

所有者を変更する

次のコマンドで、ファイル example.txt の所有者を newuser に変更します。
※所有者の変更はrootユーザーのみで実行可能なのでsudoを使用します。

sudo chown newuser example.txt

所有者とグループを同時に変更

所有者とグループを同時に変更したい場合、次のようにコマンドを使います。

sudo chown newuser:newgroup example.txt

これで、example.txt の所有者が newuser に、グループが newgroup に変更されます。
再び、ls -l で結果を確認しましょう。

ls -l

出力例:

-rw-r--r-- 1 newuser newgroup 1024 Sep 14 10:00 example.txt

umask:新規ファイル作成時のデフォルトパーミッションを設定する

umask は、ファイルやディレクトリを作成したときに適用される
「デフォルトのパーミッション」を決定します。

デフォルトのパーミッション

通常、Linuxではファイルのデフォルトパーミッションは 666
ディレクトリのデフォルトパーミッションは 777 に設定されています。
これらは次のように意味します。

  • 666: ファイルに対して、ユーザー、グループ、その他の全員が「読み取り」と「書き込み」を行える。
  • 777: ディレクトリに対して、全員が「読み取り」「書き込み」「実行」を行える。

umask の計算

umask はこのデフォルトパーミッションから「許可しない権限」を指定するためのマスク値です。
たとえば、umask 022 の場合、次のように計算されます。

  1. ファイルの場合:
    • 666(デフォルト)から 022 を引く → 644
    • この結果、ユーザーには「読み取り」「書き込み」権限があり、グループとその他のユーザーには「読み取り」だけが許可されます。
  2. ディレクトリの場合:
    • 777(デフォルト)から 022 を引く → 755
    • これにより、ユーザーには「読み取り」「書き込み」「実行」が許可され、グループとその他のユーザーには「読み取り」「実行」だけが許可されます。

umaskを確認する

現在のumask設定を確認するには、以下のコマンドを実行します。

umask

たとえば、0022と表示されれば、新しく作成するファイルのパーミッションは644、
ディレクトリのパーミッションは755になることを示します。

umaskを設定することで、システムの安全性を保ちながら
ファイルやディレクトリの作成時に適切な権限を割り当てることができます。

    目次