Linux のファイル所有者の変更

LinuxLinuxBeginner
今すぐ練習

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

はじめに

Linux システムにおいて、ファイルの所有権はセキュリティとアクセス制御の重要な要素です。すべてのファイルとディレクトリには所有者とグループが割り当てられており、これによって誰がそのファイルやディレクトリを読み取り、書き込み、または実行できるかが決まります。システム管理者や Linux ユーザーにとって、ファイルの所有権を管理する方法を理解することは、システム内の適切なセキュリティと整理を維持するために不可欠です。

この実験 (Lab) では、chown コマンドを使用して Linux でファイルの所有権を変更および管理する方法を学びます。現在の所有権を表示する方法、ファイルの所有者を変更する方法、グループの割り当てを変更する方法、およびこれらの変更をディレクトリに再帰的に適用する方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chown("Ownership Changing") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/usermod("User Modifying") linux/UserandGroupManagementGroup -.-> linux/groupadd("Group Adding") linux/UserandGroupManagementGroup -.-> linux/whoami("User Identifying") subgraph Lab Skills linux/ls -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/touch -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/chown -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/cd -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/mkdir -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/useradd -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/usermod -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/groupadd -.-> lab-271243{{"Linux のファイル所有者の変更"}} linux/whoami -.-> lab-271243{{"Linux のファイル所有者の変更"}} end

Linux におけるファイル所有権の理解

Linux では、すべてのファイルとディレクトリに所有者とグループが割り当てられています。これらの所有権属性は、Linux のパーミッションシステムの基本となっています。

まずは、現在のディレクトリ構造を調べ、ファイルの所有権を理解しましょう。

cd ~/project
ls -l

出力結果には、所有権情報を含むファイルとディレクトリのリスト(あれば)が表示されるはずです。ls -l の出力では、3 列目に所有者、4 列目にグループが表示されます。

次に、新しいファイルを作成し、そのデフォルトの所有権を調べましょう。

touch data_file.txt
ls -l data_file.txt

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

-rw-r--r-- 1 labex labex 0 Jan 1 12:00 data_file.txt

これは、ファイル data_file.txt がユーザー labex によって所有され、グループ labex に属していることを示しています。最初の部分 (-rw-r--r--) はファイルのパーミッションを示しています。

現在自分が誰としてログインしているかを確認するには、次のコマンドを実行します。

whoami

このコマンドは、現在のユーザー名を表示します。このユーザー名は labex であるはずです。これが、新しく作成されたファイルが labex ユーザーによって所有される理由を説明しています。

chown を使用したファイル所有権の変更

chown コマンドは、ファイルまたはディレクトリの所有者を変更するために使用されます。他のユーザーに所有権を変更するには、root 権限 (sudo) が必要です。

まず、ファイルの新しい所有者として使用する新しいユーザーを作成しましょう。

sudo adduser --disabled-password --gecos "" datauser

これにより、パスワードなしで datauser という名前の新しいユーザーが作成されます(これは実験目的のみです)。--gecos "" オプションは、ユーザー情報の入力をスキップします。

次に、data_file.txt の所有者を labex から datauser に変更しましょう。

sudo chown datauser data_file.txt
ls -l data_file.txt

出力結果には、所有者が datauser と表示されるはずです。

-rw-r--r-- 1 datauser labex 0 Jan 1 12:00 data_file.txt

chown コマンドの基本的な構文は次の通りです。

chown [OPTIONS] USER[:GROUP] FILE(s)

ここで:

  • USER は新しい所有者のユーザー名です。
  • GROUP(オプション)は新しいグループ名です。
  • FILE(s) は所有権を変更するファイルまたはディレクトリです。

練習用に別のファイルを作成しましょう。

touch config_file.txt
sudo chown datauser config_file.txt
ls -l config_file.txt

所有権が正しく変更されたことを確認してください。

グループ所有権の変更

Linux では、ファイルは特定のグループにも所属します。グループの割り当ては、グループ内のユーザーがグループパーミッションに基づいてファイルに対して何ができるかに影響を与えます。

新しいグループを作成し、そのグループにファイルを割り当てましょう。

sudo groupadd datagroup
groups

groups コマンドは、現在のユーザーが所属しているグループを表示します。次に、現在のユーザーを新しいグループに追加しましょう。

sudo usermod -a -G datagroup labex

このコマンドは、ユーザー labex をグループ (-G) datagroup に追加 (-a) します。グループの変更を有効にするには、通常、ログアウトして再ログインする必要があります。この実験の目的上、ログアウトせずに続けます。

次に、ファイルのグループ所有権を変更しましょう。

sudo chown :datagroup data_file.txt
ls -l data_file.txt

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

-rw-r--r-- 1 datauser datagroup 0 Jan 1 12:00 data_file.txt

所有者を変更せずにグループのみを指定するために :datagroup を使用したことに注意してください。また、1 つのコマンドで所有者とグループの両方を変更することもできます。

sudo chown datauser:datagroup config_file.txt
ls -l config_file.txt

これにより、config_file.txt の所有者とグループがそれぞれ datauserdatagroup に変更されます。

再帰的な所有権の変更

多くの場合、ディレクトリとその中身のすべての所有権を変更する必要があります。chown コマンドに -R(再帰的)オプションを付けることで、これを行うことができます。

いくつかのファイルを含むディレクトリを作成しましょう。

mkdir -p data_directory/subdirectory
touch data_directory/file1.txt
touch data_directory/file2.txt
touch data_directory/subdirectory/file3.txt

ディレクトリとその中身の現在の所有権を調べましょう。

ls -l data_directory
ls -l data_directory/subdirectory

次に、ディレクトリとその中身のすべての所有権を再帰的に変更しましょう。

sudo chown -R datauser:datagroup data_directory

結果を確認しましょう。

ls -l data_directory
ls -l data_directory/subdirectory

data_directory 内のすべてのファイルとディレクトリは、現在 datauser が所有者で、datagroup グループに所属するはずです。

再帰的オプションは非常に強力ですが、特にシステムディレクトリの所有権を変更する際には注意して使用する必要があります。誤って使用すると、システムの機能に影響を与える可能性があります。

まとめ

この実験では、Linux でのファイル所有権の管理方法を学びました。これは、システム管理とセキュリティ管理に不可欠なスキルです。ここで、あなたが達成したことを振り返りましょう。

  1. Linux のファイル所有権の概念と、現在の所有権情報の表示方法を学びました。
  2. 新しいユーザーを作成し、chown コマンドを使用してファイルの所有権を変更しました。
  3. グループの作成と管理方法、およびファイルのグループ所有権の変更方法を学びました。
  4. ディレクトリとその中身の所有権を再帰的に変更する方法を調べました。

これらのスキルは、Linux システムの管理に基本的です。特に、適切なファイルパーミッションと所有権がセキュリティと運用機能に重要なマルチユーザー環境では、これらのスキルは不可欠です。

所有権の変更にはスーパーユーザー権限(sudo を使用)が必要であることを忘れないでください。また、再帰的な変更は、特に本番環境では意図しない結果を避けるために注意して行う必要があります。