Unix / Linux - ファイルパーミッション / アクセスモード

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

Unix / Linux - File Permission

パーミッションのインジケーター

あなたが宝の chest の守護者だと思ってください。誰がそれを開けるのか、中にものを入れることができるのか、そしてものを取り出すことができるのかを決める必要があります。基本的には、ファイルパーミッションも همینことです!

ls -l コマンドを使ってファイルを一覧表示すると、こんな感じ的东西が見えるでしょう:

-rwxr-xr-x 1 john users 2048 Jan 15 2023 myfile.txt

それでは、最初の謎の文字を分解してみましょう:

  • 最初の文字はファイルタイプを示します(通常ファイルは -、ディレクトリは d
  • 次の9文字はユーザー、グループ、他者に対するパーミッションを表します

以下の便利な表で各文字の意味を覚えることができます:

文字 意味
r 読み取りパーミッション
w 書き込みパーミッション
x 実行パーミッション
- パーミッションなし

ファイルアクセスモード

それでは、これらのパーミッションが実際にファイルで何を許可するのか見てみましょう:

  1. 読み取り (r): ファイルの内容を表示
  2. 書き込み (w): ファイルを修正または削除
  3. 実行 (x): ファイルを実行プログラムまたはスクリプトとして実行

以下の楽しい方法で覚えることができます:r を "レシピを読む"、"w" を "レシピを書く"、"x" を "レシピを実行する"(料理を作る)と考えます!

ディレクトリアクセスモード

ディレクトリにも同じようなパーミッションがありますが、少し異なります:

  1. 読み取り (r): ディレクトリの内容を一覧表示
  2. 書き込み (w): ディレクトリにファイルを追加または削除
  3. 実行 (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