Chmod計算機:Unixファイルパーミッションをシンプルに
· 12分で読めます
目次
Linux、macOS、またはUnix系オペレーティングシステムで作業したことがあれば、ファイルパーミッションに遭遇したことがあるでしょう。755や-rwxr-xr-xのような一見暗号的なコードは、実は基本的な問題に対するエレガントな解決策です:システム上のファイルに誰がアクセス、変更、実行できるかを制御することです。
ファイルパーミッションはUnixセキュリティの基盤です。設定ファイルを読めるか、スクリプトを変更できるか、プログラムを実行できるかを決定します。それらを理解することは、単にチュートリアルに従うことではなく、システムのセキュリティと機能を制御することです。
この包括的なガイドでは、Unixファイルパーミッションを解明し、Chmod計算機を使用してパーミッション管理を簡素化する方法を示し、日常のワークフローですぐに使用できる実用的な例を提供します。
Unixファイルパーミッションの理解
Unix系システムのすべてのファイルとディレクトリには、アクセスを制御する関連するパーミッションのセットがあります。これらのパーミッションは恣意的ではなく、セキュリティと使いやすさのバランスをとる慎重に設計されたシステムです。
ターミナルでls -lを実行すると、次のようなものが表示されます:
-rwxr-xr-x 1 user group 4096 Mar 31 10:30 script.sh
drwxr-xr-x 5 user group 4096 Mar 31 09:15 documents
最初の列の文字(-rwxr-xr-x)はパーミッション文字列で、そのファイルで誰が何をできるかについてすべてを教えてくれます。最初の文字はファイルタイプを示し(通常のファイルは-、ディレクトリはd、シンボリックリンクはl)、残りの9文字はパーミッションを表します。
これらの9文字は3つのグループに分かれており、それぞれが異なるユーザーカテゴリのパーミッションを表しています。この体系的なアプローチにより、セキュリティを損なうことなく、異なるユーザーに正確なアクセスレベルを付与できます。
クイックヒント:ls -lの代わりにls -lhを使用すると、パーミッションと一緒に人間が読みやすい形式(KB、MB、GB)でファイルサイズが表示されます。-hフラグを使用すると、出力が一目で解析しやすくなります。
3つのパーミッションタイプの説明
Unixパーミッションは、読み取り、書き込み、実行という3つの基本的な操作を中心に展開されます。それぞれが明確な目的を持ち、ファイルとディレクトリのどちらで作業しているかによって意味が若干異なります。
読み取りパーミッション(r)
読み取りパーミッションは、ファイルの内容を表示したり、ディレクトリの内容を一覧表示したりすることを許可します。ファイルの場合、これはcat、less、または任意のテキストエディタを読み取り専用モードで使用してファイルの内容を開いて読むことができることを意味します。
ディレクトリの場合、読み取りパーミッションはlsなどのコマンドを使用してその中のファイルとサブディレクトリを一覧表示できます。ただし、ディレクトリの読み取りパーミッションだけでは中のファイルにアクセスできません。そのためには実行パーミッションも必要です。
書き込みパーミッション(w)
書き込みパーミッションは、ファイルの内容を変更したり、ディレクトリの内容を変更したりする能力を付与します。ファイルの場合、これはファイルを編集、追加、または切り詰めることができることを意味します。変更を保存し、既存の内容を上書きできます。
ディレクトリの場合、書き込みパーミッションはより強力です。そのディレクトリ内に新しいファイルを作成したり、既存のファイルを削除したり、ファイルの名前を変更したりできます。これが、ディレクトリの書き込みパーミッションがセキュリティの観点から慎重な考慮を必要とする理由です。
実行パーミッション(x)
実行パーミッションは、ファイルをプログラムまたはスクリプトとして実行することを許可します。実行可能ファイルとスクリプトの場合、このパーミッションは不可欠です。これがないと、有効なコードが含まれていても、システムはファイルの実行を許可しません。
ディレクトリの場合、実行パーミッション(「トラバース」または「検索」パーミッションと呼ばれることもあります)は、その中のファイルとサブディレクトリにアクセスすることを許可します。ディレクトリにcdしたり、中のファイルにアクセスしたりするには、そのファイルに読み取りパーミッションがあっても、ディレクトリに実行パーミッションが必要です。
| パーミッション | シンボル | ファイルへの効果 | ディレクトリへの効果 |
|---|---|---|---|
| 読み取り | r |
ファイルの内容を表示 | ディレクトリの内容を一覧表示 |
| 書き込み | w |
ファイルの内容を変更 | 内部のファイルを作成/削除 |
| 実行 | x |
プログラム/スクリプトとして実行 | ディレクトリとその内容にアクセス |
| なし | - |
アクセスなし | アクセスなし |
ユーザーカテゴリ:所有者、グループ、その他
Unixパーミッションは、3つの異なるユーザーカテゴリに適用されます。この3層システムは、効果的に管理できるほどシンプルでありながら、ファイルアクセスに対する細かい制御を提供します。
所有者(ユーザー)
所有者は、ファイルを作成したユーザー、または所有権が譲渡されたユーザーです。所有者は特別な権限を持ち、(適切なシステムレベルのパーミッションがあると仮定して)常にファイルのパーミッションを変更できます。パーミッション文字列rwxr-xr-xでは、最初の3文字(rwx)が所有者のパーミッションを表します。
ls -lを使用してファイルの所有者を確認でき、chownコマンドを使用して所有権を変更できます(ただし、これには通常rootまたはsudo権限が必要です)。
グループ
すべてのファイルはグループに属し、そのグループのメンバーであるすべてのユーザーはグループパーミッションを共有します。これは、複数のユーザーが同じファイルにアクセスする必要がある共同環境で特に便利です。パーミッション文字列の中央の3文字(この例ではr-x)がグループパーミッションを表します。
グループは/etc/groupで定義されており、groupsコマンドを実行することで、自分がどのグループに属しているかを確認できます。chgrpコマンドはファイルのグループ所有権を変更します。
その他(ワールド)
「その他」カテゴリには、システム上の他のすべてのユーザー、つまり所有者でもファイルのグループに属していないユーザーが含まれます。パーミッション文字列の最後の3文字(この例ではr-x)がその他のパーミッションを表します。
このカテゴリはセキュリティにとって重要です。過度に寛容な「その他」パーミッションは、機密データを権限のないユーザーに公開する可能性があり、過度に制限的なパーミッションは、共有リソースへの正当なアクセスを妨げる可能性があります。
プロのヒント:idコマンドを使用して、ユーザーID、グループID、および所属するすべてのグループを確認できます。これにより、任意のファイルに対してどのパーミッションカテゴリが適用されるかを理解するのに役立ちます。
数値(8進数)表記の詳細
数値表記は、8進数表記とも呼ばれ、パーミッションを3桁の数字として表します。このシステムはコンパクトで正確であり、スクリプトやドキュメントで広く使用されています。これを理解することは、効率的なUnix管理に不可欠です。
各パーミッションタイプには数値があります:読み取り = 4、書き込み = 2、実行 = 1。ユーザーカテゴリのパーミッション値を計算するには、付与したいパーミッションの値を合計します。
計算の仕組み
rwx(完全なパーミッション)の計算を分解してみましょう:
- 読み取り(r)= 4
- 書き込み(w)= 2
- 実行(x)= 1
- 合計:4 + 2 + 1 = 7
r-x(読み取りと実行、書き込みなし)の場合:
- 読み取り(r)= 4
- 書き込み(-)= 0
- 実行(x)= 1
- 合計:4 + 0 + 1 = 5
完全なパーミッションセットは3桁を使用します:所有者用に1桁、グループ用に1桁、その他用に1桁。したがって、755は次を意味します:
- 所有者:7(rwx)- 完全なパーミッション
- グループ:5(r-x)- 読み取りと実行
- その他:5(r-x)- 読み取りと実行
| 8進数 | 2進数 | シンボリック | 説明 |
|---|---|---|---|
0 |
000 | --- |
パーミッションなし |
1 |
001 | --x |
実行のみ |
2 |
010 | -w- |
書き込みのみ |
3 |
011 | -wx |
書き込みと実行 |
4 |
100 | r-- |
読み取りのみ |
5 |
101 | r-x |
読み取りと実行 |
6 |
110 | rw- |
読み取りと書き込み |
7 |
111 | rwx |
完全なパーミッション |
8進数表記が重要な理由
8進数表記は簡潔で明確です。chmod 644 file.txtを見ると、設定されている正確なパーミッションがすぐにわかります。解釈や混乱の余地はありません。
この表記は、プログラムでパーミッションを設定する必要があるスクリプトや設定ファイルで特に価値があります。また、ドキュメントやチュートリアルで最もよく遭遇する形式でもあります。
シンボリック表記とその使い方
数値表記はコンパクトですが、シンボリック表記はより直感的で柔軟です。現在の状態を知らなくてもパーミッションを変更できるため、対話的な使用や特定のパーミッション変更に理想的です。
シンボリック表記の構成要素
シンボリック表記は、パーミッションを表すために文字と記号を使用します: