Linux でファイルが特定のパーミッションを持っているかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux でファイルのパーミッションを確認する方法を学びます。ファイルのパーミッションを理解することは、ファイルのアクセス管理とセキュリティにとって基本的なことです。まずは、所有者、グループ、その他のユーザーに対する標準的な読み取り、書き込み、実行パーミッションを表示する基本的な ls -l コマンドから始めて、パーミッションを調べるさまざまな方法を探索します。

基本を理解したら、次に stat --format コマンドを使用して、さまざまな形式のパーミッションを含む、より詳細でカスタマイズ可能なファイル情報の表示方法を学びます。最後に、getfacl コマンドを使用してアクセス制御リスト (Access Control Lists, ACLs) を確認する方法を学びます。このコマンドは、標準的な所有者、グループ、その他のユーザーを超えた、より細かいファイルパーミッションの管理方法を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") subgraph Lab Skills linux/ls -.-> lab-558710{{"Linux でファイルが特定のパーミッションを持っているかどうかを確認する方法"}} linux/touch -.-> lab-558710{{"Linux でファイルが特定のパーミッションを持っているかどうかを確認する方法"}} linux/chmod -.-> lab-558710{{"Linux でファイルが特定のパーミッションを持っているかどうかを確認する方法"}} linux/pwd -.-> lab-558710{{"Linux でファイルが特定のパーミッションを持っているかどうかを確認する方法"}} end

ls -l でファイルのパーミッションを確認する

このステップでは、ls -l コマンドを使用して Linux でファイルのパーミッションを確認する方法を学びます。ファイルのパーミッションを理解することは、ファイルやディレクトリを安全に管理するために重要です。

ファイルのパーミッションは、誰がファイルやディレクトリを読み取り、書き込み、または実行できるかを決定します。Linux では、パーミッションは 3 つのカテゴリに割り当てられます。

  • 所有者 (Owner): ファイルまたはディレクトリを所有するユーザー。
  • グループ (Group): 特定のパーミッションを持つユーザーのグループ。
  • その他 (Others): システム上の他のすべてのユーザー。

まずは、パーミッションを調べるために簡単なファイルを作成しましょう。~/project ディレクトリにいることを確認してください。pwd コマンドを使用して現在のディレクトリを確認できます。

pwd

以下のような出力が表示されるはずです。

/home/labex/project

次に、touch コマンドを使用して my_file.txt という名前のファイルを作成します。

touch my_file.txt

touch コマンドは、ファイルが存在しない場合に空のファイルを作成します。

次に、ls -l コマンドを使用して、ファイルの詳細(パーミッションを含む)を表示します。

ls -l my_file.txt

以下のような出力が表示されます。

-rw-rw-r-- 1 labex labex 0 Feb 13 10:00 my_file.txt

出力の最初の部分 -rw-rw-r-- を分解してみましょう。この文字列は、ファイルの種類とパーミッションを表しています。

  • 最初の文字 (-) はファイルの種類を示します。- は通常のファイルを意味します。他の一般的な種類には、ディレクトリを表す d やシンボリックリンクを表す l があります。
  • 次の 9 文字は、3 つのセットに分けられています。
    • 最初のセット (rw-) は 所有者 のパーミッションを示します。
    • 2 番目のセット (rw-) は グループ のパーミッションを示します。
    • 3 番目のセット (r--) は その他 のパーミッションを示します。

それぞれの 3 文字のセット内では、以下の意味があります。

  • r は読み取りパーミッションを意味します。
  • w は書き込みパーミッションを意味します。
  • x は実行パーミッションを意味します。
  • - はパーミッションが付与されていないことを意味します。

例の出力 -rw-rw-r-- では、以下のようになります。

  • 所有者 (labex) は読み取り (r) と書き込み (w) のパーミッションを持っていますが、実行 (-) のパーミッションはありません。
  • グループ (labex) は読み取り (r) と書き込み (w) のパーミッションを持っていますが、実行 (-) のパーミッションはありません。
  • その他のユーザーは読み取り (r) のパーミッションのみを持っており、書き込み (-) や実行 (-) のパーミッションはありません。

パーミッションの後に続く数字と名前 (1 labex labex 0 Feb 13 10:00) は、以下の意味を持ちます。

  • 1: ファイルへのハードリンクの数。
  • labex: ファイルの所有者。
  • labex: ファイルを所有するグループ。
  • 0: ファイルのサイズ(バイト)。
  • Feb 13 10:00: 最後の変更日時。
  • my_file.txt: ファイル名。

ls -l の出力を理解することは、Linux でファイルやディレクトリを操作する上で基本的なことです。

続ける をクリックして次のステップに進んでください。

stat --format を使用してパーミッションを調べる

前のステップでは、ls -l を使用してファイルのパーミッションを確認しました。ファイルやファイルシステムに関する詳細情報を取得するためのもう 1 つの強力なコマンドが stat です。このステップでは、stat コマンドに --format オプションを指定して、より構造化された方法でファイルのパーミッションを調べます。

stat コマンドは、ファイルのサイズ、ブロック数、アクセス時間、変更時間、パーミッションなど、さまざまな情報を表示することができます。--format オプションを使用すると、フォーマットシーケンスを使って表示したい情報を正確に指定することができます。

前のステップで作成した my_file.txt ファイルのパーミッションを stat コマンドで調べてみましょう。まだ ~/project ディレクトリにいることを確認してください。

以下のコマンドを入力して Enter キーを押します。

stat --format=%A my_file.txt

以下のような出力が表示されるはずです。

-rw-rw-r--

この出力は、ls -l で見たパーミッション文字列と同じです。%A フォーマットシーケンスは、stat コマンドにファイルのパーミッションを人間が読みやすい形式で表示するよう指示します。これは ls -l と同じです。

別のフォーマットシーケンスを試してみましょう。%a シーケンスは、パーミッションを 8 進数表記で表示します。8 進数表記は、パーミッションの数値表現で、各桁が所有者、グループ、その他のユーザーのパーミッションを表します。

以下のコマンドを入力して Enter キーを押します。

stat --format=%a my_file.txt

以下のような出力が表示されるはずです。

0664

8 進数のパーミッション 0664 を分解してみましょう。

  • 最初の桁 (0) は、基本的なパーミッションでは通常無視されます。
  • 2 番目の桁 (6) は所有者のパーミッションを表します。2 進数では 6110 です。これは読み取り (1)、書き込み (1)、実行 (0) に対応します。つまり、読み取りと書き込みのパーミッションです。
  • 3 番目の桁 (6) はグループのパーミッションを表します。再び、2 進数で 110 であり、読み取りと書き込みのパーミッションを意味します。
  • 4 番目の桁 (4) はその他のユーザーのパーミッションを表します。2 進数では 4100 です。これは読み取り (1)、書き込み (0)、実行 (0) に対応します。つまり、読み取りパーミッションのみです。

これは、ls -l-rw-rw-r-- 出力と一致します。8 進数表記は、chmod コマンドでパーミッションを変更する際によく使用されます。これについては、将来の実験で学ぶかもしれません。

stat --format を使用すると、ファイルに関する特定の情報を抽出することができ、スクリプト作成や詳細な分析に非常に役立ちます。

続ける をクリックして次に進んでください。

getfacl でアクセス制御リスト (ACL) を確認する

標準的な Linux のパーミッション(所有者、グループ、その他)に加えて、一部のファイルシステムではアクセス制御リスト (Access Control Lists, ACL) がサポートされています。ACL を使用すると、基本的な 3 つのカテゴリを超えて、特定のユーザーやグループに対するパーミッションをより細かく定義することができます。

getfacl コマンドは、ファイルやディレクトリの ACL を表示するために使用されます。このステップでは、getfacl を使用して、my_file.txt ファイルに ACL が設定されているかどうかを確認します。

まず、~/project ディレクトリにいることを確認します。

pwd

/home/labex/project と表示されるはずです。

次に、my_file.txt に対して getfacl コマンドを実行します。

getfacl my_file.txt

以下のような出力が表示されるはずです。

## file: my_file.txt
## owner: labex
## group: labex
user::rw-
group::rw-
other::r--

出力を分解してみましょう。

  • ## file: my_file.txt: 調査対象のファイルを示します。
  • ## owner: labex: ファイルの所有者を示します。
  • ## group: labex: ファイルの主要なグループを示します。
  • user::rw-: この行はファイル所有者のパーミッションを示します。user:: は所有者ユーザーを指し、rw- は読み取りと書き込みのパーミッションを示します。これは ls -l で見られる所有者のパーミッションに対応しています。
  • group::rw-: この行は所有グループのパーミッションを示します。group:: は所有グループを指し、rw- は読み取りと書き込みのパーミッションを示します。これは ls -l で見られるグループのパーミッションに対応しています。
  • other::r--: この行はその他のユーザーのパーミッションを示します。other:: はその他のすべてのユーザーを指し、r-- は読み取りパーミッションを示します。これは ls -l で見られるその他のユーザーのパーミッションに対応しています。

この場合、getfacl の出力は単に標準的な Linux のパーミッションを反映しています。特定のユーザーやグループに対して ACL が設定されている場合、出力に user:username:permissionsgroup:groupname:permissions のような追加の行が表示されます。

たとえば、testuser というユーザーに読み取り専用アクセスを与える ACL が設定されている場合、出力に user:testuser:r-- のような行が含まれるでしょう。

my_file.txt には特定の ACL が設定されていないため、getfacl は標準的なパーミッションビットから導出されるデフォルトのパーミッションを表示しています。

getfacl を使用することは、特に ACL が使用されている環境で、ファイルやディレクトリに適用されるすべてのパーミッションを理解する際に不可欠です。

続ける をクリックしてこの実験を完了してください。

まとめ

この実験では、ls -l コマンドを使用して Linux でファイルのパーミッションを確認する方法を学びました。サンプルファイルを作成し、ls -l の出力を解釈して、ファイルの種類と、所有者、グループ、その他のユーザーに対する読み取り、書き込み、実行のパーミッションを理解しました。

また、ファイルのパーミッションを調べる代替方法も探索しました。stat --format コマンドを使用して、より構造化された形式で特定のパーミッションの詳細を取得し、getfacl コマンドを使用してアクセス制御リスト (Access Control Lists, ACL) を確認しました。ACL を使用すると、標準的な所有者、グループ、その他のユーザーを超えた、より細かいパーミッション制御が可能です。