ChmodとChownの詳細な解説:Linux権限のマスター

あなた自身がLinuxのパーミッションの複雑な世界に巻き込まれたことはありますか?もしまだ誰が何を読み書き実行できるのか疑問に思っているなら、正しい場所にいます。Linuxのパーミッションの複雑さを解明し、特に強力なデュオであるchmodchownに焦点を当てましょう!

このチュートリアルでは、自信を持ってファイルとディレクトリへのアクセスを制御するためのスキルを身につけます。

それでは袖をまくり上げ、Linuxのパーミッションをチャンピオンのように制覇しましょう!

前提条件

Linuxのパーミッションの深い理解に取り組む前に、chmodchownコマンドをマスターするためのLinuxマシンを用意してください。このチュートリアルでは、Ubuntu 22.04 LTS(Jammy Jellyfish)を使用します。

chmodchownコマンドの理解

Linuxのパーミッションの世界では、chmodchownコマンドは重要な力を持っています。これらのコマンドを効果的に使用する方法を理解することは、初心者からベテランの管理者まで、どのLinuxユーザーにとっても重要です。

両方のコマンドはLinuxシステムを制御するための多くの方法を提供していますが、以下にそれぞれがどのような基本的な機能を持っているかを示します:

  • chmod – このコマンドはLinuxでファイルとディレクトリのパーミッションを管理するための鍵となります。記号と数値コードの組み合わせを使用して、ユーザー、グループ、その他へのアクセスを許可または制限することができます。
  • chown – このコマンドを使用すると、ファイルやディレクトリの所有権を変更することができます。このコマンドは、管理者の制御を移行したり、ファイルとユーザー/グループの関連性を変更する必要がある場合に非常に役立ちます。

機密データの保護やチームへのアクセスの効率化など、これらのコマンドはLinuxファイル操作の世界で頼りになる存在です。

これらのコマンドの詳細については、引き続き読んで深く掘り下げてみてください。

ファイルの一覧表示と権限の表示

chmodchownコマンドを使用して権限や所有権を変更する前に、まずはファイルの一覧表示とその権限を表示する必要があります。

Linuxでは、図書館で本を探すように、ファイルの一覧表示と関連する権限の表示が頻繁に必要になります。この知識は効果的なファイル管理には欠かせません。

ファイルまたはディレクトリの権限を表示するには:

ターミナルを開き、以下のlsコマンドを実行して、現在の作業ディレクトリ内のすべてのファイルとディレクトリを長い形式(-l)で一覧表示します。

ls -l

長い形式では、以下のように各ファイルまたはディレクトリの詳細情報が提供されます。

この情報には、権限、リンク数、所有者、グループ、サイズ、および変更時刻が含まれます。ただし、現時点ではファイルの権限に焦点を当ててください。

Viewing a list of files and directories

すべてのファイルとディレクトリには、読み取り(r)、書き込み(w)、実行(x)の3つの主要な許可があります。それぞれがユーザーがファイルとディレクトリの内容とやり取りする方法を規定しています。

さらに、これらの許可は所有権の3つの異なるカテゴリに適用されます:所有者、グループ、その他(グループのメンバーでもないユーザー)。

以下は、ファイルの許可の各部分を示しています:

  • 最初の文字は、ファイル()またはディレクトリ(d)を示します。
  • 最初の部分(rw-)- 所有者に読み取りと書き込みの許可を与えますが、実行は許可しません。
  • 2番目の部分(rw-)- グループに読み取りと書き込みの許可を与えますが、実行は許可しません。
  • 最後の部分(r–)- その他のユーザーに読み取りの許可を与えますが、書き込みや実行は許可しません。
Illustrating file permissions

chmodコマンドを使用してアクセス権を変更する方法:

ファイルの許可を柔軟かつ明確に制御するための強力なツールについて学びましょう。ファイルやディレクトリへのアクセス、変更、実行を正確に調整することができるchmodコマンド(モードの変更)は、Linuxシステムを制御するための力を与えてくれます。

ファイルとディレクトリへのアクセスを柔軟かつ表現豊かに制御する必要がある場合は、シンボリックモードを使用します。

シンボリックモードを使用してchmodコマンドでアクセス許可を変更するには、次の手順に従ってください:

1. 下記のwhoコマンドを実行して、特権のないユーザーとして>で示される新しいファイルuser.txtを作成します。このコマンドはターミナル上で出力を提供しませんが、後続の手順でファイルの権限を確認します。

このコマンドにより、現在ログインしているユーザーのリストが含まれます。

who > user.txt

2. 次に、以下のコマンドを実行してuser.txtファイルの権限を表示します。

ls -l user.txt

以下には、ファイルのデフォルトの権限、所有者、作成の日と月、ファイル名が表示されています。

現在のファイル権限に注意してください。現時点ではユーザー権限に焦点を当てています(rw-)。

Viewing the file’s default permissions

3. これで、以下のコマンドを実行して所有者(u)の書き込み(w)権限を削除します。

次の表は、各シンボルが何を表すかを示しています。

User Symbol Details Operation Symbol Details Permission Symbol Details
u Owner + Add permissions r Read
g Group Remove permissions w Write
o Others = Set permissions explicitly x Execute

成功した場合、chmodコマンドはターミナル上に出力されません。このチュートリアル全体で適用されます。

chmod u-w user.txt

4. 権限を変更した後、以下のコマンドを実行してuser.txtファイルの権限を表示します。

ls -l user.txt

ステップ2でメモしたファイルの権限(rw-)と以下のものと比較してください。所有者(u)が読み取り権限しか持っていなくなったことに注意してください(r–)。

Viewing modified owner permission

5. 以下の各コマンドを実行して、次の操作を行ってください:

  • 所有者(u)に対してuser.txtファイルに追加(+)、書き込み(w)、実行(x)の権限を付与します。
  • 変更された権限を確認するために、user.txtファイルの情報を表示します。
chmod u+wx user.txt
ls -l user.txt

以下に示すように、ユーザーはuser.txtファイルに対して読み取り、書き込み、実行(rwx)の権限を持っています。

Viewing modified owner permissions

6. 以下のchmodコマンドを実行して、次の操作を行います:

  • 所有者(u)に対する実行(x)の権限を削除します。
  • グループ(g)に対する書き込み(w)の権限を削除します。
  • その他(o)に対するすべての権限(rwx)を削除します。

このコマンドを使用すると、複数のカテゴリから同時に権限を削除することができます。

この場合、-vオプションはchmodに対して操作によって行われた変更についてのメッセージを表示するように指示します。

chmod -v u-x,g+w,o-rwx user.txt
Viewing modified permissions for owner, group, and others

7. 次に、以下のコマンドを実行して、次の操作を行ってください:

  • すべてのカテゴリに読み取り(r)の権限を追加します。
  • すべての(a)カテゴリに対して書き込みと実行(wx)の権限を削除します。
chmod a+r,a-wx user.txt

8. 以下のコマンドを実行して、user.txtファイルの更新された権限を表示します。

ls -l user.txt
Viewing updated permissions for all categories

? または、次のコマンドで3つのカテゴリ(ユーザー、グループ、その他)に対して同じ権限を変更することもできます:

chmod ugo-r – すべてのカテゴリー(ugo)の読み取り権限(r)を削除します(-)。

chmod ugo+r – すべてのカテゴリー(ugo)の読み取り権限(r)を追加します(+)。

9. 最後に、以下のコマンドを実行して次の操作を行います:

  • chmod – オーナーとグループの読み取りおよび書き込み(rw)権限を設定し、他者の権限を削除します(o=)。
    この=記号を使うと、権限を明示的に設定して既存の権限を上書きできます。=記号の後に権限が指定されていない場合、そのカテゴリーのすべての権限が削除されます。
  • lsuser.txtファイルの権限に加えた変更を表示します。
chmod ug=rw,o= user.txt
ls -l user.txt
Viewing the modified permissions set

chmodコマンドを使用してアクセス権を調整する:8進数モード

象徴的な表記の複雑さなしに、ファイルのアクセス権を迅速かつ正確に設定できる能力があると想像してください。8進数モード(基数8の表記法)は、アクセス権を管理するための新しいお気に入りの方法になるでしょう。

8進数モード(基数8の表記法)では、権限は0から7までの4桁または3桁の数字で表されます。各数字は、次のようにオーナー、グループ、その他のための特定の権限セットに対応しています:

  • 読み取り(r) = 4
  • 書き込み(w) = 2
  • 実行(x) = 1
  • 権限なし(-) = 0

8進数モードがファイル権限の管理にどのように作用するかを見るために、次の手順を実行してください:

1. 以下のchmodコマンドを実行して、user.txtファイルに以下の権限(664)を追加してください:

  • 所有者 – 読み取り(4)+ 書き込み(2)+ 実行(0)= 6
  • グループ – 読み取り(4)+ 書き込み(2)+ 実行(0)= 6
  • その他 – 読み取り(4)+ 書き込み(0)+ 実行(0)= 4

Linuxでファイルの権限を設定する際に、chmodコマンドでの四桁の数字の先頭の桁(左端)は、setuid、setgid、およびsticky bitなどの特別な権限を表し、次の三桁は所有者、グループ、およびその他のための標準的な権限をそれぞれ表します。

しかし、三桁の数字を使用する場合、最初の桁はファイルの所有者(u)、二番目はファイルのグループ(g)、そして最後はその他(o)の権限を表します。

特別な権限を扱わない場合、特に八進数であることを示す先頭のゼロは暗黙的に含まれる可能性があり、したがって省略することができます。以下の例のように、0664の代わりに664を使用します。

chmod 664 user.txt

2. 次に、以下のコマンドを実行してuser.txtファイルの権限を表示します。

ls -l user.txt

以下の出力では、user.txtファイルに設定された権限がシンボリックモードで表示され、これは八進モードでの664に相当します。

Viewing permissions modified via octal mode

3. 今、statコマンドを実行して、user.txtファイルに関する包括的な統計情報を表示します。これには、シンボリックモードと8進数モードでのアクセス権限も含まれます。

stat user.txt

下記に示すように、Accessプロパティでは、user.txtファイルのファイル権限に関連する8進数およびシンボリックモードが表示されます。

この情報を使用して、8進数モードを使用したアクセス権限の調整についての理解を深めます。

Viewing the octal and symbolic representations of permissions

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

権限がファイルまたはディレクトリで実行できるアクションを規定しますが、これらの権限を設定または変更できるのは誰かを指定することで所有者を変更することができます。

chownコマンド(所有者変更)はファイルおよびディレクトリの所有権を管理するための主要なコマンドです。 chmodコマンドと同様に、chownコマンドはルートユーザーのみがファイルまたはディレクトリの所有権を変更できるルート専用のコマンドです。

chownコマンドを使用して所有権を管理するには、以下の手順に従ってください:

1. 以下のコマンドを実行して、billという名前のユーザーを作成し、強力なパスワードを設定します。

sudo useradd bill
sudo passwd bill
Adding a user and updating user password

2. 次に、以下の各コマンドを実行し、現在ログインしているユーザーのリスト(who)を非特権ユーザーとしてnew.txtというファイルに書き込み、その所有者とパーミッションを表示します。

who > new.txt
ls -l  new.txt

以下の出力では、ファイルの所有者はmercyです。

Viewing the owner of the new.txt file

3. 所有者が確認されたら、以下のchownコマンドを実行してnew.txtファイルの所有者をbillに変更します。

chmodコマンドと同様に、chownコマンドは出力を提供しませんが、次の手順で所有者の変更を確認します。

sudo chown bill new.txt

4. このコマンドを実行して、new.txtファイルの新しい所有者を表示します。

ls -l  new.txt

以下の出力は、new.txtファイルの所有者がbillに正常に変更されたことを確認しています。

Viewing the new owner of the new.txt file

chownコマンドを使用してグループの所有権を変更する

Linuxファイルシステムでは、すべてのファイルとディレクトリが個々の所有者だけでなく、グループとも関連付けられています。 ひとつの音程の合わない楽器がアンサンブル全体を乱すことがあるように、不正な所有権は潜在的な問題を引き起こす可能性があります。

心配する必要はありますか? それほどでもありません。 グループの関連付けにより、ファイルのパーミッションに対する階層的なアプローチが可能になります。 このアプローチにより、複数のユーザーがグループのメンバーシップに基づいて共同作業し、アクセスを共有できるようになります。

グループ所有権を変更するには、次の手順を完了してください:

1. 以下のコマンドを実行して、new.txt ファイルに関連付けられているグループを表示します。

ls -l  new.txt
Viewing the group associated with the new.txt file

2. 次に、以下のコマンドを実行します。出力は提供されませんが、次の作業を実行します:

  • グループ(groupadd)をdevelopersという名前で作成します。
  • new.txt ファイルのグループ(chown)所有権をdevelopersに変更します。
sudo groupadd developers
sudo chown :developers new.txt

? 代わりに、個々のアプローチの代わりに、ファイルまたはディレクトリ全体の所有者およびグループ所有権を再帰的に変更するには、次のコマンドを使用します。

sudo chown -R john:finance-group user.txt

sudo chown -R john:finance-group ~/Desktop

3. 今度は、次のコマンドを再実行して、new.txt ファイルの新しいグループ所有権を表示します(ls)。

ls -l  new.txt

以下は、出力によってnew.txt ファイルのグループ所有権をdevelopersに正常に変更したことが確認されます。

Viewing the new group ownership of the new.txt file

数値 UID と GID を使用したファイル所有権の変更

ユーザ名とグループ名はファイル所有者を識別する人間が読める方法を提供しますが、すべてのユーザとグループは一意の数値識別子と関連付けられています。

これらの一意の数値識別子は、ユーザ ID(UID)およびグループ ID(GID)です。これらは、重複するか類似したユーザ名とグループ名がある環境でファイル所有権を設定する明確な方法を提供します。

数値 UID と GID を使用して所有権を変更するには、次の手順を実行します:

1. 以下のコマンドを実行して、new.txt ファイルに関する情報をリストします(ls)。

-n オプションは、ユーザーとグループの名前を解決する代わりに、数値のUIDとGIDを表示するようにlsコマンドに指示します。

ls -n new.txt

new.txt ファイルに関連するUIDとGIDに注意してください。これらは後の手順で比較に使用します。

Viewing the UID and GID associated with the new.txt file

2. 次に、以下のgetentコマンドを実行して、ファイルの所有権に設定したいユーザーとグループのUIDとGIDを取得します。

<username><groupname> のプレースホルダーを好みのユーザー名とグループ名に置き換えてください。

getent passwd <username>
getent group <groupname>

次の出力でUID(すなわち、1002)とGID(すなわち、1005)に注意してください。これらは次の手順で所有権を変更する際に必要です。

デフォルトでは、Linuxでユーザーが作成されると、ユーザーと同じ名前のグループも作成されます。このグループはユーザーのプライマリグループとして機能し、自動的にこのプライマリグループに追加されます。

したがって、ユーザーjohnのGIDはfinanceグループのGIDとは異なります。ユーザーが明示的にグループに追加されない限り、それぞれのGIDは異なります。

Viewing UID and GID for user john and group finance

3. 次に、以下のコマンドを実行してnew.txt ファイルの所有権とグループ所有権を変更します。ステップ2でメモしたUID(1002)とGID(1005)で置き換えてください。

? 数字の UID と GID を使用すると、ユーザー名とグループ名よりも読みにくくなる場合があることに注意してください。したがって、意図しない変更を避けるために、正しい番号を使用していることを確認してください。

sudo chown 1002:1005 new.txt

4. 最後に、以下のコマンドを再実行して、new.txt ファイルに関する情報(ls)をリストし、ファイルの所有権の変更を確認します。

ls -n new.txt

ステップ1でメモした UID と GID を以下の番号と比較してください。新しいファイルの所有権が 1001:1003 から 1002:1005 に変更されたことに注意してください。

Verifying the new UID and GID for the new.txt file

結論

Linux のアクセス許可について包括的に探求する旅に出ました。これにより、chmodchown などの重要なコマンドをマスターしました。このチュートリアルを通じて、シンボリックモードと八進数モードを使用してアクセス許可を変更するスキルを習得しました。

また、名前または数値の UID および GID を介してファイルの所有権とグループの割り当てを管理するスキルも習得しました。この chmodchown の新たな知識を持っていると、Linux システム内でのアクセスと所有権を管理するための強力なツールを手に入れました。

しかし、なぜさらに Linux の能力を高めないのでしょうか?おそらく、アクセス制御リスト(ACL)を含む高度なアクセス制御方法についても学んでみてください。ファイルとディレクトリのアクセス許可をさらに正確に制御してみてください!

Source:
https://adamtheautomator.com/chmod-and-chown/