あなた自身がLinuxのパーミッションの複雑な世界に巻き込まれたことはありますか?もしまだ誰が何を読み書き実行できるのか疑問に思っているなら、正しい場所にいます。Linuxのパーミッションの複雑さを解明し、特に強力なデュオであるchmod
とchown
に焦点を当てましょう!
このチュートリアルでは、自信を持ってファイルとディレクトリへのアクセスを制御するためのスキルを身につけます。
それでは袖をまくり上げ、Linuxのパーミッションをチャンピオンのように制覇しましょう!
前提条件
Linuxのパーミッションの深い理解に取り組む前に、chmod
とchown
コマンドをマスターするためのLinuxマシンを用意してください。このチュートリアルでは、Ubuntu 22.04 LTS(Jammy Jellyfish)を使用します。
chmod
とchown
コマンドの理解
Linuxのパーミッションの世界では、chmod
とchown
コマンドは重要な力を持っています。これらのコマンドを効果的に使用する方法を理解することは、初心者からベテランの管理者まで、どのLinuxユーザーにとっても重要です。
両方のコマンドはLinuxシステムを制御するための多くの方法を提供していますが、以下にそれぞれがどのような基本的な機能を持っているかを示します:
chmod
– このコマンドはLinuxでファイルとディレクトリのパーミッションを管理するための鍵となります。記号と数値コードの組み合わせを使用して、ユーザー、グループ、その他へのアクセスを許可または制限することができます。chown
– このコマンドを使用すると、ファイルやディレクトリの所有権を変更することができます。このコマンドは、管理者の制御を移行したり、ファイルとユーザー/グループの関連性を変更する必要がある場合に非常に役立ちます。
機密データの保護やチームへのアクセスの効率化など、これらのコマンドはLinuxファイル操作の世界で頼りになる存在です。
これらのコマンドの詳細については、引き続き読んで深く掘り下げてみてください。
ファイルの一覧表示と権限の表示
chmod
やchown
コマンドを使用して権限や所有権を変更する前に、まずはファイルの一覧表示とその権限を表示する必要があります。
Linuxでは、図書館で本を探すように、ファイルの一覧表示と関連する権限の表示が頻繁に必要になります。この知識は効果的なファイル管理には欠かせません。
ファイルまたはディレクトリの権限を表示するには:
ターミナルを開き、以下のls
コマンドを実行して、現在の作業ディレクトリ内のすべてのファイルとディレクトリを長い形式(-l
)で一覧表示します。
長い形式では、以下のように各ファイルまたはディレクトリの詳細情報が提供されます。
この情報には、権限、リンク数、所有者、グループ、サイズ、および変更時刻が含まれます。ただし、現時点ではファイルの権限に焦点を当ててください。

すべてのファイルとディレクトリには、読み取り(r)、書き込み(w)、実行(x)の3つの主要な許可があります。それぞれがユーザーがファイルとディレクトリの内容とやり取りする方法を規定しています。
さらに、これらの許可は所有権の3つの異なるカテゴリに適用されます:所有者、グループ、その他(グループのメンバーでもないユーザー)。
以下は、ファイルの許可の各部分を示しています:
- 最初の文字は、ファイル(–)またはディレクトリ(d)を示します。
- 最初の部分(rw-)- 所有者に読み取りと書き込みの許可を与えますが、実行は許可しません。
- 2番目の部分(rw-)- グループに読み取りと書き込みの許可を与えますが、実行は許可しません。
- 最後の部分(r–)- その他のユーザーに読み取りの許可を与えますが、書き込みや実行は許可しません。

chmod
コマンドを使用してアクセス権を変更する方法:
ファイルの許可を柔軟かつ明確に制御するための強力なツールについて学びましょう。ファイルやディレクトリへのアクセス、変更、実行を正確に調整することができるchmod
コマンド(モードの変更)は、Linuxシステムを制御するための力を与えてくれます。
ファイルとディレクトリへのアクセスを柔軟かつ表現豊かに制御する必要がある場合は、シンボリックモードを使用します。
シンボリックモードを使用してchmod
コマンドでアクセス許可を変更するには、次の手順に従ってください:
1. 下記のwho
コマンドを実行して、特権のないユーザーとして>
で示される新しいファイルuser.txt
を作成します。このコマンドはターミナル上で出力を提供しませんが、後続の手順でファイルの権限を確認します。
このコマンドにより、現在ログインしているユーザーのリストが含まれます。
2. 次に、以下のコマンドを実行してuser.txt
ファイルの権限を表示します。
以下には、ファイルのデフォルトの権限、所有者、作成の日と月、ファイル名が表示されています。
現在のファイル権限に注意してください。現時点ではユーザー権限に焦点を当てています(rw-)。

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
コマンドはターミナル上に出力されません。このチュートリアル全体で適用されます。
4. 権限を変更した後、以下のコマンドを実行してuser.txt
ファイルの権限を表示します。
ステップ2でメモしたファイルの権限(rw-)と以下のものと比較してください。所有者(u)が読み取り権限しか持っていなくなったことに注意してください(r–)。

5. 以下の各コマンドを実行して、次の操作を行ってください:
- 所有者(
u
)に対してuser.txt
ファイルに追加(+
)、書き込み(w
)、実行(x
)の権限を付与します。 - 変更された権限を確認するために、
user.txt
ファイルの情報を表示します。
以下に示すように、ユーザーはuser.txt
ファイルに対して読み取り、書き込み、実行(rwx)の権限を持っています。

6. 以下のchmod
コマンドを実行して、次の操作を行います:
- 所有者(
u
)に対する実行(x
)の権限を削除します。 - グループ(
g
)に対する書き込み(w
)の権限を削除します。 - その他(
o
)に対するすべての権限(rwx
)を削除します。
このコマンドを使用すると、複数のカテゴリから同時に権限を削除することができます。
この場合、-v
オプションはchmod
に対して操作によって行われた変更についてのメッセージを表示するように指示します。

7. 次に、以下のコマンドを実行して、次の操作を行ってください:
- すべてのカテゴリに読み取り(
r
)の権限を追加します。 - すべての(
a
)カテゴリに対して書き込みと実行(wx
)の権限を削除します。
8. 以下のコマンドを実行して、user.txt
ファイルの更新された権限を表示します。

? または、次のコマンドで3つのカテゴリ(ユーザー、グループ、その他)に対して同じ権限を変更することもできます:
chmod ugo-r
– すべてのカテゴリー(ugo
)の読み取り権限(r
)を削除します(-
)。
chmod ugo+r
– すべてのカテゴリー(ugo
)の読み取り権限(r
)を追加します(+
)。
9. 最後に、以下のコマンドを実行して次の操作を行います:
chmod
– オーナーとグループの読み取りおよび書き込み(rw
)権限を設定し、他者の権限を削除します(o=
)。
この=
記号を使うと、権限を明示的に設定して既存の権限を上書きできます。=
記号の後に権限が指定されていない場合、そのカテゴリーのすべての権限が削除されます。ls
–user.txt
ファイルの権限に加えた変更を表示します。

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
を使用します。
2. 次に、以下のコマンドを実行してuser.txt
ファイルの権限を表示します。
以下の出力では、user.txtファイルに設定された権限がシンボリックモードで表示され、これは八進モードでの664に相当します。

3. 今、stat
コマンドを実行して、user.txt
ファイルに関する包括的な統計情報を表示します。これには、シンボリックモードと8進数モードでのアクセス権限も含まれます。
下記に示すように、Accessプロパティでは、user.txtファイルのファイル権限に関連する8進数およびシンボリックモードが表示されます。
この情報を使用して、8進数モードを使用したアクセス権限の調整についての理解を深めます。

chown
コマンドを使用したファイル所有権の変更
権限がファイルまたはディレクトリで実行できるアクションを規定しますが、これらの権限を設定または変更できるのは誰かを指定することで所有者を変更することができます。
chown
コマンド(所有者変更)はファイルおよびディレクトリの所有権を管理するための主要なコマンドです。 chmod
コマンドと同様に、chown
コマンドはルートユーザーのみがファイルまたはディレクトリの所有権を変更できるルート専用のコマンドです。
chown
コマンドを使用して所有権を管理するには、以下の手順に従ってください:
1. 以下のコマンドを実行して、bill
という名前のユーザーを作成し、強力なパスワードを設定します。

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

3. 所有者が確認されたら、以下のchown
コマンドを実行してnew.txt
ファイルの所有者をbill
に変更します。
chmod
コマンドと同様に、chown
コマンドは出力を提供しませんが、次の手順で所有者の変更を確認します。
4. このコマンドを実行して、new.txt
ファイルの新しい所有者を表示します。
以下の出力は、new.txtファイルの所有者がbillに正常に変更されたことを確認しています。

chown
コマンドを使用してグループの所有権を変更する
Linuxファイルシステムでは、すべてのファイルとディレクトリが個々の所有者だけでなく、グループとも関連付けられています。 ひとつの音程の合わない楽器がアンサンブル全体を乱すことがあるように、不正な所有権は潜在的な問題を引き起こす可能性があります。
心配する必要はありますか? それほどでもありません。 グループの関連付けにより、ファイルのパーミッションに対する階層的なアプローチが可能になります。 このアプローチにより、複数のユーザーがグループのメンバーシップに基づいて共同作業し、アクセスを共有できるようになります。
グループ所有権を変更するには、次の手順を完了してください:
1. 以下のコマンドを実行して、new.txt
ファイルに関連付けられているグループを表示します。

2. 次に、以下のコマンドを実行します。出力は提供されませんが、次の作業を実行します:
- グループ(
groupadd
)をdevelopers
という名前で作成します。 new.txt
ファイルのグループ(chown
)所有権をdevelopers
に変更します。
? 代わりに、個々のアプローチの代わりに、ファイルまたはディレクトリ全体の所有者およびグループ所有権を再帰的に変更するには、次のコマンドを使用します。
sudo chown -R john:finance-group user.txt
sudo chown -R john:finance-group ~/Desktop
3. 今度は、次のコマンドを再実行して、new.txt
ファイルの新しいグループ所有権を表示します(ls
)。
以下は、出力によってnew.txt ファイルのグループ所有権をdevelopersに正常に変更したことが確認されます。

数値 UID と GID を使用したファイル所有権の変更
ユーザ名とグループ名はファイル所有者を識別する人間が読める方法を提供しますが、すべてのユーザとグループは一意の数値識別子と関連付けられています。
これらの一意の数値識別子は、ユーザ ID(UID)およびグループ ID(GID)です。これらは、重複するか類似したユーザ名とグループ名がある環境でファイル所有権を設定する明確な方法を提供します。
数値 UID と GID を使用して所有権を変更するには、次の手順を実行します:
1. 以下のコマンドを実行して、new.txt
ファイルに関する情報をリストします(ls
)。
-n
オプションは、ユーザーとグループの名前を解決する代わりに、数値のUIDとGIDを表示するようにls
コマンドに指示します。
new.txt
ファイルに関連するUIDとGIDに注意してください。これらは後の手順で比較に使用します。

2. 次に、以下のgetent
コマンドを実行して、ファイルの所有権に設定したいユーザーとグループのUIDとGIDを取得します。
<username>
と <groupname>
のプレースホルダーを好みのユーザー名とグループ名に置き換えてください。
次の出力でUID(すなわち、1002)とGID(すなわち、1005)に注意してください。これらは次の手順で所有権を変更する際に必要です。
デフォルトでは、Linuxでユーザーが作成されると、ユーザーと同じ名前のグループも作成されます。このグループはユーザーのプライマリグループとして機能し、自動的にこのプライマリグループに追加されます。
したがって、ユーザーjohn
のGIDはfinance
グループのGIDとは異なります。ユーザーが明示的にグループに追加されない限り、それぞれのGIDは異なります。

3. 次に、以下のコマンドを実行してnew.txt
ファイルの所有権とグループ所有権を変更します。ステップ2でメモしたUID(1002
)とGID(1005
)で置き換えてください。
? 数字の UID と GID を使用すると、ユーザー名とグループ名よりも読みにくくなる場合があることに注意してください。したがって、意図しない変更を避けるために、正しい番号を使用していることを確認してください。
4. 最後に、以下のコマンドを再実行して、new.txt
ファイルに関する情報(ls
)をリストし、ファイルの所有権の変更を確認します。
ステップ1でメモした UID と GID を以下の番号と比較してください。新しいファイルの所有権が 1001:1003 から 1002:1005 に変更されたことに注意してください。

結論
Linux のアクセス許可について包括的に探求する旅に出ました。これにより、chmod
や chown
などの重要なコマンドをマスターしました。このチュートリアルを通じて、シンボリックモードと八進数モードを使用してアクセス許可を変更するスキルを習得しました。
また、名前または数値の UID および GID を介してファイルの所有権とグループの割り当てを管理するスキルも習得しました。この chmod
と chown
の新たな知識を持っていると、Linux システム内でのアクセスと所有権を管理するための強力なツールを手に入れました。
しかし、なぜさらに Linux の能力を高めないのでしょうか?おそらく、アクセス制御リスト(ACL)を含む高度なアクセス制御方法についても学んでみてください。ファイルとディレクトリのアクセス許可をさらに正確に制御してみてください!