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