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

LinuxBeginner
オンラインで実践に進む

はじめに

Linux のようなマルチユーザーオペレーティングシステムにおいて、ファイルパーミッション(権限)は極めて重要なセキュリティ機能です。これらは、誰がファイルを読み取り、書き込み、または実行できるかを制御し、ユーザーが許可されたデータにのみアクセスできるように保証します。これらのパーミッションを管理する方法を理解することは、すべての Linux ユーザー、開発者、またはシステム管理者にとって基本的なスキルです。

この実験(Lab)では、ファイルパーミッションを管理するための必須コマンドについて実践的な経験を積みます。以下のことを学習します。

  • touch コマンドを使用して新しいファイルを作成する。
  • 数値(八進数/オクタル)表記を使用して chmod コマンドでファイルパーミッションを変更する。
  • chown コマンドを使用してファイルの所有者とグループを変更する。
  • ls -l コマンドを使用して変更を確認する。
  • ディレクトリの標準パーミッションを設定する。

この実験(Lab)の終わりまでに、Linux におけるファイルおよびディレクトリパーミッションの基本原則に習熟しているでしょう。

touch /tmp/testfile コマンドでテストファイルを作成する

このステップでは、実験(Lab)の残りの部分で使用する空のファイルを作成することから始めます。Linux で空のファイルを作成するための標準的なコマンドは touch です。このコマンドは、ファイルが存在しない場合は作成し、既に存在する場合はその更新タイムスタンプを更新します。

テストファイルは、一時ファイル用の標準的な場所である /tmp ディレクトリ内に作成します。

testfile という名前のファイルを作成するために、ターミナルで次のコマンドを実行してください。

touch /tmp/testfile

コマンドが成功した場合、出力は何も生成されません。オプションとして、ls /tmp/testfile でリスト表示することにより、ファイルが作成されたことを確認できます。

chmod 644 /tmp/testfile コマンドでパーミッションを設定する

このステップでは、作成したファイルのパーミッションを変更する方法を学びます。この目的には chmod (change mode) コマンドが使用されます。パーミッションは、シンボリック表記または数値(八進数/オクタル)表記を使用して設定できます。ここでは、非常によく使われる数値表記を使用します。

数値表記では、パーミッションは 3 桁の数字で表され、それぞれ所有者グループその他のユーザーに対応します。各パーミッションには以下の値があります。

  • 読み取り (r) には 4
  • 書き込み (w) には 2
  • 実行 (x) には 1

ここでは、ファイルに対して非常によく使われる設定である 644 にパーミッションを設定します。これは以下を意味します。

  • 所有者: 6 (4+2) -> 読み取りと書き込み (rw-)
  • グループ: 4 -> 読み取り専用 (r--)
  • その他: 4 -> 読み取り専用 (r--)

次に、次のコマンドを実行して、これらのパーミッションをテストファイルに適用します。

chmod 644 /tmp/testfile

このコマンドは出力を生成しません。後のステップで、パーミッションが正しく適用されたことを確認します。

chown root:root /tmp/testfile コマンドで所有者を変更する

このステップでは、ファイルの所有権を変更します。chown (change owner) コマンドは、ファイルの所有者であるユーザーやグループを変更するために使用されます。構文は chown ユーザー:グループ ファイル名 です。

ファイルの所有者を別のユーザー(例:root)に変更することは、管理者権限を必要とする特権操作です。必要な権限で chown を実行するには、sudo コマンドを使用する必要があります。この LabEx 環境では、labex ユーザーはパスワードなしで sudo を使用できます。

/tmp/testfile の所有者とグループを root に変更しましょう。次のコマンドを実行してください。

sudo chown root:root /tmp/testfile

ここでも、コマンドが成功しても出力は生成されません。この操作により、ファイルがシステムの管理者ユーザーによって所有されるようになります。

ls -l /tmp/testfile コマンドで検証する

このステップでは、これまでに加えたすべての変更を確認します。ls -l コマンドは、「ロングリスト形式」を提供し、パーミッション、所有者、グループ、サイズ、更新日時など、ファイルに関する詳細情報を表示します。

/tmp/testfile を検査するために、次のコマンドを実行します。

ls -l /tmp/testfile

以下のような出力が表示されるはずです(日付と時刻は異なります)。

-rw-r--r-- 1 root root 0 Oct 22 15:13 /tmp/testfile

この出力を分析してみましょう。

  • -rw-r--r--: これらはファイルのパーミッションです。最初の文字 - は、それが通常のファイルであることを示します。rw- は、所有者(root)が読み取りと書き込みのパーミッションを持っていることを示します。次の r-- は、グループ(root)が読み取り専用のパーミッションを持っていることを示します。最後の r-- は、他のすべてのユーザーも読み取り専用のパーミッションを持っていることを示します。これは、設定した 644 と一致しています。
  • root root: これは、root に変更したファイルの所有者とグループを示しています。

これで、ファイルの作成、パーミッションの設定、所有権の変更がすべて正常に完了しました。

chmod 755 /tmp/testdir コマンドでディレクトリを保護する

この最終ステップでは、ディレクトリのパーミッションを設定します。ディレクトリのパーミッションはファイルのものと似ていますが、execute ビット (x) には特別な意味があります。それは、ディレクトリに入り、その中のファイルにアクセスする能力を付与するということです。

ディレクトリに対する一般的で安全なパーミッション設定は 755 です。内訳は以下の通りです。

  • 所有者: 7 (4+2+1) -> 読み取り、書き込み、実行 (rwx)。所有者はファイルの一覧表示、ファイルの作成/削除、ディレクトリへの進入が可能です。
  • グループ: 5 (4+1) -> 読み取りと実行 (r-x)。グループメンバーはファイルのリスト表示とディレクトリへの進入はできますが、ファイルの作成や削除はできません。
  • その他: 5 (4+1) -> 読み取りと実行 (r-x)。他のユーザーもファイルのリスト表示とディレクトリへの進入が可能です。

この実験(Lab)の開始時に、/tmp/testdir という名前のディレクトリが作成されています。ここで、chmod コマンドを使用して、それに 755 のパーミッションを適用します。

chmod 755 /tmp/testdir

ls -ld /tmp/testdir で変更を確認できます。-d フラグは、ディレクトリの内容ではなく、ディレクトリ自体の詳細情報をリスト表示するために重要です。

まとめ

この実験(Lab)の完了、おめでとうございます!Linux 環境におけるファイルおよびディレクトリのパーミッションを管理するための基本的なスキルを習得しました。

この実験では、以下の方法を学びました。

  • touch を使用して空のファイルを作成する方法。
  • ファイルには 644、ディレクトリには 755 のような数値(八進数)コードを使用して chmod を実行し、アクセスを制御する方法。
  • sudo chown を使用してファイルの所有者とグループを変更する方法。
  • ls -l を使用してファイルパーミッションと所有権を検査・確認する方法。

これらのコマンドは、ファイルを保護し、整理されたシステムを維持するための不可欠なツールです。これらを習得することは、Linux に習熟するための重要なステップとなります。