Linux パーミッションの変更

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

はじめに

Linux のファイルパーミッションは、異なるユーザーがファイルやディレクトリにアクセス、変更、実行できる方法を制御する基本的なセキュリティ機能です。これらのパーミッションを理解し、効果的に管理することは、システムのセキュリティと適切なリソース共有を維持するために不可欠です。

この実験では、chmod コマンドを使用してファイルパーミッションを表示、設定、変更する方法を学びます。chmod コマンドを使用すると、管理者は特定のファイルに対して誰が読み取り、書き込み、または実行できるかを制御でき、機密データを保護しつつ、必要なリソースを承認されたユーザーがアクセスできるようにすることができます。

この実験の終了時には、特定のパーミッションでファイルを作成し、既存のファイルパーミッションを変更し、グループベースのアクセス制御を割り当てることができるようになります。これらのスキルは、Linux システム管理者やユーザーにとって非常に重要です。

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

Linux は、誰がファイルやディレクトリにアクセスでき、どのような操作を実行できるかを細かく制御できるパーミッションシステムを実装しています。このステップでは、Linux のパーミッションがどのように機能するか、およびそれを表示する方法について学びます。

まず、この実験のすべての操作を行う作業ディレクトリに移動します。

cd ~/project

パーミッションを調べるためのサンプルファイルを作成しましょう。

touch sample_file.txt

このファイルのパーミッションを表示するには、ls コマンドに -l オプションを付けて使用します。

ls -l sample_file.txt

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

-rw-rw-r-- 1 labex labex 0 Oct 25 12:34 sample_file.txt

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

  1. 最初の文字 (-) はファイルの種類を示します。ダッシュ (-) は通常のファイルを表し、d はディレクトリを示します。

  2. 次の 9 文字は、3 つのグループに分かれたファイルパーミッションを表します。

    • 最初の 3 文字 (rw-) は所有者のパーミッションを示します。
    • 次の 3 文字 (rw-) はグループのパーミッションを示します。
    • 最後の 3 文字 (r--) はその他のすべてのユーザーのパーミッションを示します。
  3. 各グループで、3 つの位置は次の意味を持ちます。

    • r は読み取りパーミッションを表します。
    • w は書き込みパーミッションを表します。
    • x は実行パーミッションを表します。
    • - はパーミッションが付与されていないことを示します。
  4. パーミッションの後には、リンク数、所有者名、グループ名、ファイルサイズ、最終変更日時、およびファイル名などの他の詳細が表示されます。

Linux のパーミッションビットは、数値でも表すことができます。

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

これらの値を足し合わせることで、任意のパーミッションの組み合わせを 1 つの数字で表すことができます。

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • r-- = 4+0+0 = 4

これは、後のステップで chmod コマンドを数値モードで使用する際に重要になります。

特定のパーミッションでファイルを作成する

このステップでは、新しいファイルを作成し、その初期パーミッションを設定して、所有者のみがアクセスできるように制限します。これは、他のユーザーがアクセスしてはいけない機密情報を含むファイルを作成する際に便利です。

まず、secure_file.txt という名前の新しいファイルを作成します。

touch secure_file.txt

次に、このファイルにいくつかの内容を追加しましょう。

echo "This file contains secure information." > secure_file.txt

デフォルトでは、ほとんどの Linux システムは、所有者とグループが読み取りと書き込みができ、その他のユーザーは読み取りのみ可能なパーミッションでファイルを作成します。現在のパーミッションを確認しましょう。

ls -l secure_file.txt

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

-rw-rw-r-- 1 labex labex 37 Oct 25 12:40 secure_file.txt

機密情報を含むファイルの場合、アクセスを所有者のみに制限したいと思います。数値モードで chmod コマンドを使用して、パーミッションを 600 に設定します。これは以下の意味を持ちます。

  • 所有者:読み取りと書き込み (6 = 4+2)
  • グループ:パーミッションなし (0)
  • その他のユーザー: パーミッションなし (0)

パーミッションを変更するには、次のコマンドを実行します。

chmod 600 secure_file.txt

再度パーミッションを確認しましょう。

ls -l secure_file.txt

出力は次のように表示されるはずです。

-rw------- 1 labex labex 37 Oct 25 12:40 secure_file.txt

パーミッションが変更されたことに注目してください。現在は所有者(labex ユーザー)のみが読み取りと書き込みのパーミッションを持ち、グループメンバーやその他のユーザーはこのファイルにアクセスできません。

別のファイルを作成してみましょう。今回は、別の手法を使って作成時にパーミッションを設定します。

まず、内容を含む public_file.txt という名前の新しいファイルを作成します。

echo "This file is readable by everyone." > public_file.txt

次に、このファイルを誰でも読み取り可能にし、所有者のみが書き込み可能にしましょう。

chmod 644 public_file.txt

パーミッションを確認します。

ls -l public_file.txt

次のように表示されるはずです。

-rw-r--r-- 1 labex labex 33 Oct 25 12:45 public_file.txt

このパーミッション設定 (644) は、誰でも読み取り可能で、所有者のみが変更できる公開ファイルに一般的に使用されます。

chmod でシンボリックモードを使用する

前のステップでは、数値モードを使用してパーミッションを設定しました。今度は、パーミッションを変更するより直感的な方法であるシンボリックモードを探索してみましょう。

シンボリックモードでは、文字と記号を使用してユーザーとパーミッションを表します。

  • u - ユーザー(所有者)
  • g - グループ
  • o - その他のユーザー(他の全員)
  • a - 全員(ugo と同等)

そして、パーミッションの記号は次の通りです。

  • r - 読み取り
  • w - 書き込み
  • x - 実行

練習用にスクリプトファイルを作成しましょう。

touch my_script.sh

スクリプトに簡単なコマンドを追加します。

echo '#!/bin/bash' > my_script.sh
echo 'echo "Hello from the script!"' >> my_script.sh

現在のパーミッションを確認します。

ls -l my_script.sh

スクリプトが実行可能でないことがわかるはずです。

-rw-rw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh

所有者にスクリプトの実行権限を付与するには、次のコマンドを使用します。

chmod u+x my_script.sh

これは、ユーザー/所有者 (u) に対して実行 (x) 権限を追加 (+) します。

再度パーミッションを確認します。

ls -l my_script.sh

次のように表示されるはずです。

-rwxrw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh

次に、全員に実行権限を付与しましょう。

chmod a+x my_script.sh

これは、すべてのユーザー(所有者、グループ、その他のユーザー)に実行権限を追加します。

再度パーミッションを確認します。

ls -l my_script.sh

次のように表示されるはずです。

-rwxrwxr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

スクリプトを実行しましょう。

./my_script.sh

次のように表示されるはずです。

Hello from the script!

- 演算子を使用してパーミッションを削除することもできます。たとえば、グループとその他のユーザーの書き込み権限を削除するには、次のコマンドを使用します。

chmod go-w my_script.sh

パーミッションを確認します。

ls -l my_script.sh

次のように表示されるはずです。

-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

一度に複数のパーミッションを設定することもできます。たとえば、全員に読み取りと実行権限を付与し、書き込み権限は所有者のみに付与するには、次のコマンドを使用します。

chmod u=rwx,go=rx my_script.sh

これは、各カテゴリに対して特定のパーミッションを設定 (=) します。

もう一度パーミッションを確認します。

ls -l my_script.sh

結果は前と同じになるはずです。

-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh

グループパーミッションの操作

Linux では、ファイルをグループに関連付けることができ、共同作業時のアクセス制御を可能にします。このステップでは、グループを作成し、ファイルのグループ所有権を変更し、適切なグループパーミッションを設定する方法を学びます。

まず、新しいグループを作成しましょう。実際のシナリオでは、これは部署やプロジェクトチームを表すことがあります。

sudo groupadd developers

次に、このグループと共有するファイルを作成しましょう。

touch shared_config.txt
echo "## Development configuration settings" > shared_config.txt
echo "debug_mode=true" >> shared_config.txt
echo "log_level=verbose" >> shared_config.txt

現在、このファイルはあなたのユーザーとあなたの主要グループに所属しています。確認してみましょう。

ls -l shared_config.txt

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

-rw-rw-r-- 1 labex labex 61 Oct 25 13:00 shared_config.txt

このファイルのグループ所有権を developers グループに変更するには、chown コマンドを使用します。

sudo chown labex:developers shared_config.txt

構文は chown user:group filename です。ここでは、ユーザーを labex のままにし、グループを developers に変更しています。

現在の所有権を確認しましょう。

ls -l shared_config.txt

次のように表示されるはずです。

-rw-rw-r-- 1 labex developers 61 Oct 25 13:00 shared_config.txt

グループが developers に変更されたことに注意してくださいが、パーミッションはまだ同じです。グループメンバーが読み取りはできるが書き込みはできず、他のユーザーからのアクセスを防止するようにパーミッションを変更しましょう。

chmod 640 shared_config.txt

これにより、以下のように設定されます。

  • 所有者:読み取りと書き込み (6 = 4+2)
  • グループ:読み取りのみ (4)
  • その他のユーザー: パーミッションなし (0)

再度パーミッションを確認しましょう。

ls -l shared_config.txt

次のように表示されるはずです。

-rw-r----- 1 labex developers 61 Oct 25 13:00 shared_config.txt

これで、developers グループのメンバーはこの設定ファイルを読むことができますが、変更することはできません。developers グループに属していないユーザーは、このファイルにまったくアクセスできません。

同じ結果をシンボリックモードでも達成できます。

chmod u=rw,g=r,o= shared_config.txt

このコマンドは明示的に以下を設定します。

  • ユーザー/所有者:読み取りと書き込み
  • グループ:読み取りのみ
  • その他のユーザー: パーミッションなし

ユーザーを developers グループに追加するには、通常次のコマンドを使用します。

sudo usermod -a -G developers username

ただし、これは追加のユーザーアカウントを作成する必要があるため、この特定の実験の範囲外です。

まとめ

この実験では、Linux のファイルパーミッションに関する重要な概念と実践方法を学びました。以下に、あなたが達成したことをまとめます。

  1. Linux のパーミッションモデルの仕組みを理解しました。これには、ユーザー、グループ、その他のユーザーに対する読み取り、書き込み、実行権限の概念が含まれます。

  2. 特定のパーミッションを持つファイルを作成し、chmod コマンドを数値モードで使用して、さまざまな種類のファイルに適切なアクセスレベルを設定する方法を学びました。

  3. chmod コマンドのシンボリックモードを探索しました。これは、特定のパーミッションを追加、削除、または設定するためのより直感的なアプローチを提供します。

  4. グループパーミッションを操作し、グループを作成し、ファイルのグループ所有権を変更し、適切なグループレベルのアクセス制御を設定する方法を学びました。

これらのスキルは、Linux システムにおけるセキュリティの維持とアクセス制御に不可欠です。サーバー構成の管理、ソフトウェアの開発、または単に個人ファイルの整理を行っている場合でも、ファイルパーミッションを適切に設定および変更する方法を理解することは、すべての Linux ユーザーにとって必須のスキルです。

Linux を使い続ける際には、適切なパーミッション管理がシステムセキュリティの重要な要素であることを忘れないでください。常に最小特権の原則に従って、ユーザーやプロセスにはタスクを実行するために必要なパーミッションのみを与え、それ以上は与えないようにしてください。