Unix / Linux - ファイルパーミッション / アクセスモード
こんにちは、未来のプログラマーさんたち!今日は、UnixとLinuxのファイルパーミッションの興味深い世界に飛び込んでみましょう。新しいことでも心配しないでください;このチュートリアルが終わるまでには、ファイルパーミッションのプロになっていることでしょう!一緒にこのエキサイティングな旅に出発しましょう。

パーミッションのインジケーター
あなたが宝の chest の守護者だと思ってください。誰がそれを開けるのか、中にものを入れることができるのか、そしてものを取り出すことができるのかを決める必要があります。基本的には、ファイルパーミッションも همینことです!
ls -l コマンドを使ってファイルを一覧表示すると、こんな感じ的东西が見えるでしょう:
-rwxr-xr-x 1 john users 2048 Jan 15 2023 myfile.txt
それでは、最初の謎の文字を分解してみましょう:
- 最初の文字はファイルタイプを示します(通常ファイルは
-、ディレクトリはd) - 次の9文字はユーザー、グループ、他者に対するパーミッションを表します
以下の便利な表で各文字の意味を覚えることができます:
| 文字 | 意味 |
|---|---|
| r | 読み取りパーミッション |
| w | 書き込みパーミッション |
| x | 実行パーミッション |
| - | パーミッションなし |
ファイルアクセスモード
それでは、これらのパーミッションが実際にファイルで何を許可するのか見てみましょう:
- 読み取り (r): ファイルの内容を表示
- 書き込み (w): ファイルを修正または削除
- 実行 (x): ファイルを実行プログラムまたはスクリプトとして実行
以下の楽しい方法で覚えることができます:r を "レシピを読む"、"w" を "レシピを書く"、"x" を "レシピを実行する"(料理を作る)と考えます!
ディレクトリアクセスモード
ディレクトリにも同じようなパーミッションがありますが、少し異なります:
- 読み取り (r): ディレクトリの内容を一覧表示
- 書き込み (w): ディレクトリにファイルを追加または削除
- 実行 (x): ディレクトリおよびその内容にアクセス
ディレクトリを部屋と考えます。r は中を覗くことができる、w は家具を追加または削除することができる、x は部屋に入ることができると考えます。
パーミッションの変更
パーミッションを理解したので、それを変更する方法を学びましょう!chmod コマンドを使います。chmod の使い方には2つの方法があります:シンボリックモードと絶対モード。
シンボリックモード
これはパーミッションを追加または削除する指示を与えるものです。基本的な構文は以下の通りです:
chmod [who][+,-,=][permissions] filename
-
whoは u(ユーザー)、g(グループ)、o(他者)、a(全て)のいずれか -
+はパーミッションを追加、-は削除、=は正確に設定 -
permissionsは r、w、x
例えば:
chmod u+x myfile.txt
これはユーザーに対して実行パーミッションを追加します。
絶対パーミッションを使った chmod
絶対モードは数字を使ってパーミッションを設定します。各パーミッションには値があります:
- r = 4
- w = 2
- x = 1
これらを各カテゴリ(ユーザー、グループ、他者)に対して足し合わせます。以下の表で理解を助けます:
| 数字 | パーミッション |
|---|---|
| 0 | --- |
| 1 | --x |
| 2 | -w- |
| 3 | -wx |
| 4 | r-- |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
例えば:
chmod 755 myfile.txt
これはユーザーに対して rwx、グループおよび他者に対して rx を設定します。
所有者とグループの変更
時々、ファイルの所有者や属するグループを変更する必要があります。それにはどのようにするのでしょうか。
所有者の変更
ファイルの所有者を変更するには、chown コマンドを使います:
chown newowner filename
例えば:
chown alice myfile.txt
これは myfile.txt の所有者を alice に変更します。
グループ所有者の変更
グループを変更するには、chgrp コマンドを使います:
chgrp newgroup filename
例えば:
chgrp developers myfile.txt
これは myfile.txt のグループを developers に変更します。
SUID と SGID ファイルパーミッション
それでは、特別なパーミッションについて話しましょう:SUID(Set User ID)とSGID(Set Group ID)。これらはファイルのスーパーパワーです!
- SUID: 実行ファイルに設定すると、所有者のパーミッションで実行されます。
- SGID: 実行ファイルに設定すると、グループのパーミッションで実行されます。
これらを設定するには、chmod を特別な数字を使って設定します:
chmod 4755 myfile # SUIDを設定
chmod 2755 myfile # SGIDを設定
先頭の4はSUIDを設定し、2はSGIDを設定します。
そして、ここまでです!あなたは今、Unix/Linuxのファイルパーミッションの世界に精通しています。力は責任を伴います。ファイルを安全に保つために、これらのパーミッションを賢く使ってください。
練習は完璧を生みますので、安全な環境で実験を恐れずに行ってください。間もなく、あなたはプロのようにファイルパーミッションを管理するようになるでしょう!
Credits: Image by storyset
