Linux chmod Example

このクイックチュートリアルでは、Ubuntu マシンで chmod コマンドを使用して、ユーザーのファイルシステムに存在する特定のファイルからユーザー権限を検索、変更、削除する方法について説明します。

Linux Permissions

Linux Permissions は、基本的な権利を把握すれば簡単に理解できる素晴らしいルールのセットです。

  • パーミッションが定義された要素
  • パーミッションで実行できるアクション
  • 誰がどんなアクションを実行できるか

Linuxファイルシステムには二つの基本要素が存在する。

  1. ディレクトリ
  2. ファイル

実行可能なアクションは3つあります:

  1. 読み込み
  2. 書き込み
  3. 実行。 スクリプトの実行以外にも、ファイルやフォルダを作成する際にも同様の操作が必要です

これらの操作を実行できるユーザーは、

  1. ファイルのオーナー
  2. ファイルのオーナーのグループ
  3. オーナーグループやオーナー自身に関連しないユーザー

ファイルに関するパーミッションを確認するには、次のコマンドを実行します。

ls -l

ここで、このコマンドで戻ってくるものです:

Find permission for files

Find permission for files

出力では、最初の10文字がファイルの許可を提示します:

  • 最初の文字、このケースでは ‘-‘はこれはファイルですことを意味しています。
  • 次の9文字は、それぞれ所有者、所有者のグループ、および他の人の権限を表します。

パーミッションの変更

ファイルのパーミッションを変更する構文は以下のようになる。

chmod permissions file …

パーミッションの8進表記

パーミッションを8進表記できるようになった。 たとえば、hello.txt ファイルに、所有者には読み取り、書き込み & の実行権限を、そのグループには読み取り & の書き込み権限を、その他の人には権限を与えないように設定するには、次のコマンドを実行します:

sudo chmod 760 hello.txt ファイルに、所有者には書き込み権限を、その他の人には権限を与えないようにするには、次のコマンドを実行します。txt

一度、上記のコマンドを実行して、次のコマンドを使用して非所有者アカウントでファイルを読み込もうとします:

sudo -u notowner-user more hello.txt

次のエラーが発生します:

hello.txt.Not Owner.txt.Notowner.txt.notowner.txt.notowner.txt.notowner.txt.notowner.txt.hello.txt.notowner.txt.notowner.txt.hello: Permission denied

しかし、この数字はどこから来ているのでしょうか? この数字の各桁は、パーミッションのセットを表しています。

  • 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 ファイルに、所有者には読み取り、書き込み & の実行権限を、そのグループには読み取り & の書き込み権限を、その他の人には権限を与えないように設定するには、次のコマンドを実行します:

sudo chmod u=rwe,g=rw,o-rwx hello.txt ファイルに、所有者には書き込み権限を、そのグループに書き込み権限を、それ以外には何も与えないようにするには、次のコマンドを実行します。txt

既存のユーザーに権限を追加するには、次のコマンドも実行できます:

sudo chmod g+w hello.txt

ここで、書き込み権限は、ファイルの所有者のユーザー グループに割り当てられました。

Recursive Permission Changes

特定のディレクトリ内のファイルに対する権限も単一のコマンドで変更することが可能です。 指定されたディレクトリの各ファイルとフォルダーのパーミッションを一度に変更するには、-R:

sudo chmod 777 Directory/*

ファイルのパーミッションの変更を明確に反映した次の出力を見ることができます。

Recursively changing file permissions

Recursively changing file permissions

Conclusion

このレッスンでは、ファイルのパーミッションを変更する方法と、必要ならそれを再帰的に実行する方法について調べました。 どのように Linux のパーミッションの背後にある基本的な概念を理解し、それは私たちの日常業務に大いに役立つものです。

コメントする