Linuxシステムを操作する上で、ファイルやディレクトリのセキュリティは非常に重要です。その根幹をなすのが「パーミッション(アクセス権限)」の管理であり、これを設定するために用いられるのが chmod
コマンドです。
本記事では、Linuxの基本的なコマンドの一つである chmod
について、その意味や使い方、具体的な設定例を分かりやすく解説します。この記事を通して、chmod
コマンドへの理解を深め、Linux環境におけるファイル管理をより安全かつ効率的に行えるようになることを目指します。
chmodコマンドの役割:ファイルアクセスを制御する
chmod
コマンドは、「change mode」の略で、ファイルやディレクトリのアクセス権限(パーミッション)を変更するために使用されます。言い換えれば、「誰が」「そのファイルやディレクトリに対して」「何をして良いか」というルールを設定するコマンドです。
適切なパーミッション設定は、不正なアクセスや誤操作によるデータの破損・流出を防ぐために不可欠です。
アクセス権限の構成要素:「誰に」「何を」許可するのか
パーミッションを理解する上で、まず以下の2つの要素を把握する必要があります。
- 対象者(誰に):
- 所有者 (owner/user): そのファイルやディレクトリを作成したユーザー(持ち主)です。
- グループ (group): そのファイルやディレクトリが所属するグループのメンバーです。複数のユーザーでファイルを共有する際に利用されます。
- その他 (others): 上記の所有者でもグループのメンバーでもない、それ以外の全てのユーザーを指します。
- 権限の種類(何を):
- 読み取り (r: read): ファイルの内容を閲覧したり、ディレクトリ内のファイル一覧を表示したりする権限です。
- 書き込み (w: write): ファイルの内容を変更したり、ディレクトリ内に新しいファイルやディレクトリを作成・削除したりする権限です。
- 実行 (x: execute): ファイルをプログラムとして実行したり、ディレクトリに移動 (cdコマンド) したりする権限です。
これらの組み合わせによって、各対象者に対する詳細なアクセス制御が可能になります。
chmodコマンドの基本的な使い方:権限を設定する2つのモード
chmod
コマンドでパーミッションを設定する方法には、主に「数値モード(絶対モード)」と「記号モード(相対モード)」の2種類があります。
1. 数値モード (絶対モード)
数値モードは、3桁の8進数(0から7までの数字)で権限を指定する方法です。各権限は以下のように数値で表されます。
- 読み取り (r) = 4
- 書き込み (w) = 2
- 実行 (x) = 1
- 権限なし = 0
これらの数値を足し合わせることで、各対象者(所有者、グループ、その他)の権限を表現します。例えば、「読み取り」と「書き込み」を許可する場合は 4 + 2 = 6
となります。
3桁の数字は、左から順に「所有者」「グループ」「その他」の権限を示します。
代表的な設定例:
chmod 755 [ファイル名またはディレクトリ名]
- 所有者: 7 (4+2+1 = rwx) → 読み取り、書き込み、実行が可能
- グループ: 5 (4+0+1 = r-x) → 読み取り、実行が可能
- その他: 5 (4+0+1 = r-x) → 読み取り、実行が可能
- 実行可能なファイルや、一般的にアクセスを許可するディレクトリでよく用いられます。
chmod 644 [ファイル名]
- 所有者: 6 (4+2+0 = rw-) → 読み取り、書き込みが可能
- グループ: 4 (4+0+0 = r–) → 読み取りのみ可能
- その他: 4 (4+0+0 = r–) → 読み取りのみ可能
- 一般的なテキストファイルなど、実行の必要がないファイルでよく用いられます。
2. 記号モード (相対モード)
記号モードは、現在のパーミッションに対して権限を追加、削除、または指定した権限に設定する方法です。
- 対象者:
u
(user): 所有者g
(group): グループo
(others): その他a
(all): 全ての対象者 (u, g, o)
- 操作:
+
: 権限を追加します。-
: 権限を削除します。=
: 指定した権限に設定します(既存の権限は上書きされます)。
- 権限:
r
: 読み取り権限w
: 書き込み権限x
: 実行権限
代表的な設定例:
chmod u+x [ファイル名]
- 所有者に実行権限を追加します。
chmod go-w [ファイル名]
- グループとその他のユーザーから書き込み権限を削除します。
chmod a=r [ファイル名]
- 全ての対象者(所有者、グループ、その他)の権限を読み取りのみに設定します。
具体的なコマンド例:chmod 600 [ファイル名]
の意味
ここで、具体的なコマンド例として chmod 600 [ファイル名]
という設定が何を意味するのかを詳しく見ていきましょう。
600
という数値は、以下のように解釈されます。
- 最初の
6
(所有者の権限):4 (読み取り) + 2 (書き込み) + 0 (実行なし)
を意味します。- したがって、ファイルの所有者のみが、そのファイルを読み取り、かつ書き込むことができます。実行権限はありません。
- 記号で表現すると
rw-
となります。
- 真ん中の
0
(グループの権限):0 (読み取りなし) + 0 (書き込みなし) + 0 (実行なし)
を意味します。- したがって、そのファイルが属するグループのメンバーは、そのファイルに対して一切の操作(読み取り、書き込み、実行)ができません。
- 記号で表現すると
---
となります。
- 最後の
0
(その他の権限):0 (読み取りなし) + 0 (書き込みなし) + 0 (実行なし)
を意味します。- したがって、所有者でもグループメンバーでもないその他のユーザーも、そのファイルに対して一切の操作ができません。
- 記号で表現すると
---
となります。
総合すると、chmod 600 [ファイル名]
というコマンドは、**「指定したファイルの所有者だけが読み書き可能で、それ以外の全てのユーザー(グループのメンバー含む)からは一切アクセスできないようにする」**という、非常に強固なセキュリティ設定を意味します。
この 600
というパーミッションは、SSHの秘密鍵ファイル (~/.ssh/id_rsa
など) や、個人情報を含む重要な設定ファイルなど、機密性が非常に高いファイルに対して適用されることが一般的です。第三者による不正な閲覧や改ざんを厳格に防ぐ目的で利用されます。
設定されたパーミッションの確認方法
ファイルやディレクトリに設定されているパーミッションは、ls -l
コマンドを実行することで確認できます。
コマンドを実行すると、行の先頭に drwxr-xr-x
や -rw-r--r--
のような文字列が表示されます。この最初の10文字がパーミッション情報を表しています。
- 最初の1文字: ファイルタイプ (
d
: ディレクトリ,-
: ファイル,l
: シンボリックリンクなど) - 続く3文字: 所有者の権限 (r, w, x)
- 次の3文字: グループの権限 (r, w, x)
- 最後の3文字: その他の権限 (r, w, x)
例えば、-rw-------
であれば、それはファイルであり、所有者のみが読み書き可能(600と同じ意味)であることを示します。
まとめ:chmodを理解して安全なLinux運用を
chmod
コマンドは、Linuxシステムにおけるファイルとディレクトリのセキュリティを維持するための基本的ながら非常に強力なツールです。数値モードと記号モードの特性を理解し、それぞれのファイルやディレクトリの役割や機密性に応じて適切なパーミッションを設定することが、安全なシステム運用の第一歩となります。
特に、chmod 600
のような厳格な権限設定は、重要な情報を保護する上で欠かせません。この記事が、皆様の chmod
コマンドへの理解を深め、より安全で快適なLinuxライフの一助となれば幸いです。