このクイックチュートリアルでは、Ubuntu マシンで chmod コマンドを使用して、ユーザーのファイルシステムに存在する特定のファイルからユーザー権限を検索、変更、削除する方法について説明します。
Linux Permissions
Linux Permissions は、基本的な権利を把握すれば簡単に理解できる素晴らしいルールのセットです。
- パーミッションが定義された要素
- パーミッションで実行できるアクション
- 誰がどんなアクションを実行できるか
Linuxファイルシステムには二つの基本要素が存在する。
- ディレクトリ
- ファイル
実行可能なアクションは3つあります:
- 読み込み
- 書き込み
- 実行。 スクリプトの実行以外にも、ファイルやフォルダを作成する際にも同様の操作が必要です
これらの操作を実行できるユーザーは、
- ファイルのオーナー
- ファイルのオーナーのグループ
- オーナーグループやオーナー自身に関連しないユーザー
ファイルに関するパーミッションを確認するには、次のコマンドを実行します。
ここで、このコマンドで戻ってくるものです:
Find permission for files
出力では、最初の10文字がファイルの許可を提示します:
- 最初の文字、このケースでは ‘-‘はこれはファイルですことを意味しています。
- 次の9文字は、それぞれ所有者、所有者のグループ、および他の人の権限を表します。
パーミッションの変更
ファイルのパーミッションを変更する構文は以下のようになる。
パーミッションの8進表記
パーミッションを8進表記できるようになった。 たとえば、hello.txt ファイルに、所有者には読み取り、書き込み & の実行権限を、そのグループには読み取り & の書き込み権限を、その他の人には権限を与えないように設定するには、次のコマンドを実行します:
一度、上記のコマンドを実行して、次のコマンドを使用して非所有者アカウントでファイルを読み込もうとします:
次のエラーが発生します:
しかし、この数字はどこから来ているのでしょうか? この数字の各桁は、パーミッションのセットを表しています。
- 0: 権限なし
- 1: 実行権限
- 2: 書き込み権限
- 4: 読み込み権限
オーナーに読み書き & 実行権限を割り当てるために、7 (= 4 + 2 + 1) を割り当てたのである。 これを桁の表でよりよく理解しよう。
Number | Binary | Read | Write | Execute |
0 | 000 | no | no | no |
1 | 001 | なし | なし | あり |
2 | 010 | なし | yes | no |
3 | 011 | no | yes | yes |
4 | 100 | はい | いいえ | いいえ |
5101 | はい | いいえ | はい | |
6 | 110 | はい | YES | NO |
7 | 111 | YES | YES | YES |
上の表は、それぞれがファイル権限の面で何を表しているかがよくわかると思います。
パーミッションの文字表現
パーミッションは8進数で表すことができる。 たとえば、hello.txt ファイルに、所有者には読み取り、書き込み & の実行権限を、そのグループには読み取り & の書き込み権限を、その他の人には権限を与えないように設定するには、次のコマンドを実行します:
既存のユーザーに権限を追加するには、次のコマンドも実行できます:
ここで、書き込み権限は、ファイルの所有者のユーザー グループに割り当てられました。
Recursive Permission Changes
特定のディレクトリ内のファイルに対する権限も単一のコマンドで変更することが可能です。 指定されたディレクトリの各ファイルとフォルダーのパーミッションを一度に変更するには、-R:
ファイルのパーミッションの変更を明確に反映した次の出力を見ることができます。
Recursively changing file permissions
Conclusion
このレッスンでは、ファイルのパーミッションを変更する方法と、必要ならそれを再帰的に実行する方法について調べました。 どのように Linux のパーミッションの背後にある基本的な概念を理解し、それは私たちの日常業務に大いに役立つものです。