ファイルとディレクトリのパーミッションを手動で変更するのにうんざりしていませんか?ファイルとディレクトリのアクセス許可を変更するための、より高速で効率的な方法をお探しですか?この記事では、コマンド chmod
を使用してファイルとディレクトリのアクセス許可を変更する方法を学習します。 再帰的に!
詳細については、読み進めてください!
前提条件
先に進むには、Linux デバイスと、ファイルとサブディレクトリのアクセス許可を練習できるディレクトリが必要です。
Linux ユーザーとグループについて学ぶ
所有者とグループは Linux では重要であり、ファイルとディレクトリを安全に管理するために必要です。所有者は、ファイルまたはディレクトリが割り当てられた人であり、既定では作成者です。 Linux では、ファイルとディレクトリもグループに属します。ユーザーとグループの両方が chown
経由で設定されます コマンド。
以下のスクリーンショットで、緑色で強調表示されたコンテンツは、ファイルまたはディレクトリを所有するユーザー mihail
を示しています。 この例では。青色で強調表示されたコンテンツは、ファイルまたはディレクトリが属し、staff
が所有するグループを示します。 この例ではグループ化します。
Linux のファイルとディレクトリのアクセス許可について
アクセス権は、ユーザーまたはグループが特定のファイルまたはディレクトリに対して実行できるアクションを設定します。それらは文字表現で示され、数値も割り当てられます。
- 読み取り (
r
または4
): ユーザーまたはグループがファイルまたはディレクトリの内容を読み取ることができるかどうかを示します。読み取り権限は、デフォルトで、すべての関係者の新しく作成されたすべてのファイルとディレクトリに付与されます。 - 書く (
w
または2
): ユーザーまたはグループがオブジェクトのコンテンツを編集できるかどうかを示します。この権限は、デフォルトでファイルまたはディレクトリの所有者にのみ付与されます。 - 実行 (
x
または1
): ユーザーまたはグループがファイルを実行できるか、ディレクトリ内でコマンドを実行できるかどうかを示します。デフォルトでは、実行権限はディレクトリのみに付与され、ファイルには付与されません。
ユーザーに (
u
) ディレクトリに対する実行権限を持っている場合、ユーザーはディレクトリ内でコマンドを実行できないため、内容を一覧表示することはできません!
コマンド ls -l
の出力例を以下に示します。 さまざまな権限タイプを示します。 d
で始まるアクセス許可 値、ディレクトリを示します。
では、なぜオブジェクトごとに 3 つの許可セットがあるように見えるのでしょうか?パーミッションを細かく制御するには、パーミッションを以下に示すセクション (このチュートリアルではパーティとして参照) に分割します。
- ユーザー (
u
): 青色で強調表示されたファイルまたはディレクトリの所有者。 - グループ (
g
): ファイルまたはディレクトリが属するグループのメンバー。緑色で強調表示されています。 - その他 (
o
): 明示的に割り当てられていないすべての追加のユーザーとグループ。赤で強調表示されます。
chmod recursive コマンドによるファイル許可の変更
Linux のパーミッションを正しく理解した上で、ファイルのパーミッションを変更する方法を学びましょう。権限は chmod
経由で変更されます 以下の例に示す再帰コマンド。
1. まず、ls -l
で現在の権限を確認します 指図。ここでは、my_dir/index.js ファイルが表示されます。
2. chmod
を実行します コマンド、パーティーを指定、a
(すべて)、および権限、rwx
、または読み取り/書き込み/実行。完全なコマンドは次のとおりです:chmod a=rwx index.js
.
3. ご覧のとおり、chmod
を実行しています recursive は出力を返しません。権限が変更されたことを確認するには、コマンド ls -l
を実行します また。
数値によるファイル許可の設定
読み取りや書き込みなどのアクセス許可に関連付けられている番号を覚えていますか?文字値を指定する代わりに、数字で特定の権限を指定できます。値を追加することで、6
などの特定の権限を作成します これは write (2
の組み合わせです) ) と読み取り (4
) パーミッション。
以下の例では、main.py のパーミッションを設定します。 コマンド chmod 664 main.py
を介してファイル .数値の内訳は次のとおりです。
- ユーザー: 読み書き (
6
). - グループ: 読み書き (
6
). - その他: 読み取り (
4
).
権限が変更されたら、main.py の新しい権限を確認します コマンド ls -l
を含むファイル .
ファイル権限の削除と追加
これまでに実行した数値以外のコマンドでは、代入パラメーター (=
) を使用していました。 ) chmod
で 明示的なパーミッションを設定するための再帰的。代わりに、(-
を削除することができます ) または (+
を追加) ) パーミッションを既存のパーミッション セットに追加します。
1. まず、README.md の既存の権限を一覧表示します コマンド ls -l README.md
を介してファイル .
2. 次に、(+
を追加します。 ) 実行 (x
) ユーザー パーティーへのアクセス許可 (u
)、削除中 (-
) 読み取り (r
) 相手からの許可 (o
) README.md の場合 、次のコマンドで chmod u+x,o-r README.md
.異なるパーティの権限はカンマで区切ります (,
)。
3. ls -l README.md
を実行します コマンドを実行して、権限が変更されたことを確認します。
ファイルとディレクトリのパーミッションを再帰的に変更する
作業は進んでいますが、一度に 1 つのファイルしか操作していません。アクセス許可を変更するファイルが多数ある場合はどうすればよいでしょうか。ゲームを強化し、複数のファイルのアクセス許可を変更する方法を学びましょう。
複数のファイルを変更するオプションの 1 つは、chmod
を実行することです。 -R
による再帰 (大文字ではなく再帰的) オプション。再帰オプションは、指定されたパス内のサブディレクトリの下のファイルを含むすべてのファイルのアクセス許可を変更します。
1. 次のコマンド chmod -R a=r,u=rwx my_dir
を検討してください。 .ほとんどのオプションは、これまでに見たことがあるものです。
このコマンドは、ディレクトリ my_dir 内のすべてのファイルのアクセス許可を変更します およびサブディレクトリ、再帰オプション (-R
経由) )。ファイルは読み取り可能に設定されています (r
) すべて (a
) )、現在のユーザーに対して異なる権限 (u
) ) 完全な権限 (読み取り、書き込み、実行) に設定します。
以下のスクリーンショットでは、コマンドを実行した後の結果のアクセス許可が表示されますが、結果の出力はありません。
2. コマンド chmod -R a=rwx my_dir
を実行するとします。 、前と同じディレクトリ my_dir にあります。 ここでも、my_dir 内のすべてのファイルを変更しています。 およびそのサブディレクトリをすべて指定する (a
) 完全な権限 (読み取り、書き込み、実行)。 chmod
のようなコマンドの結果は次のとおりです。 recursive は出力を表示しません。
3.数値法はどうですか?以下に示すように、再帰的な方法は数値権限 chmod -R 770 my_dir
でも機能します。 .ここでは、ユーザーとグループに完全な権限を与えていますが、相手には権限を与えていません。
4. ls -l
を実行します my_dir を確認する ファイルとサブディレクトリのパーミッションは数値方式で設定されます。
特別な権限によるファイルとフォルダの動作の定義
特別なアクセス許可により、標準のアクセス許可セットに固有のいくつかの追加の特権が許可されます。 3 つの特別な権限があります。これらの特別なアクセス許可がどのように機能するか、およびそれらをファイルまたはディレクトリに追加する方法は次のとおりです。
SUID (ユーザー + S) パーミッションの設定
一般に SUID と呼ばれます 、それはユーザーのための特別な許可です。 SUID 機能は 1 つ:SUID を持つファイル 誰がファイルを実行しているかに関係なく、常にファイルを所有するユーザーとして実行されます。
たとえば、index.js を考えてみましょう .追加の SUID を付与するには 許可、chmod u+s index.js
を実行 .
ls -l index.js
を実行すると 、ユーザーが s を持っていることがわかります
SGID (グループ + S) 権限の設定
一般にSGIDと呼ばれる 、この特別な許可には 2 つの機能があります:
- ファイルに設定すると、ファイルをグループとして実行できます 誰がファイルを実行しているかに関係なく、ファイルの所有者です。
- ディレクトリに設定すると、そのディレクトリに作成されたすべてのファイルにグループが含まれます ディレクトリの所有者に設定された所有権。
index.php の練習 ファイル。 SGID を追加するには このファイルへのアクセス許可を取得するには、次のコマンドを実行します:chmod g+s index.php
.
ls -l index.php
を実行すると 、グループが s がある
次のディレクトリに移動します:my_dir . SGID を追加できます 次のコマンドを使用して、このディレクトリへのアクセス許可:chmod g+s my_dir
.このディレクトリに作成されたファイルには、グループが含まれます ディレクトリ所有者に設定された所有権。 ls -ld my_dir
を使用して、ディレクトリの新しいアクセス許可を確認できます (d
パラメータは、出力をディレクトリのみに制限します)。
スティッキー ビット許可の変更
最後の特別な許可は、「スティッキー ビット」とも呼ばれます。この権限は、個々のファイルには影響しません。ただし、ディレクトリ レベルでは、ファイルの削除を制限します。 所有者のみ ファイルの削除は、そのディレクトリ内のファイルを削除できます。
スティッキー ビットを古いおなじみの my_dir に追加します ディレクトリ。これを行うには、次のようにコマンドを実行します:chmod +t my_dir
.
スティッキー ビットを追加するには、other を指定しないことに注意してください
+t
の前の group(o) .
my_dir をチェックすると の新しい権限では、other に大文字の T が表示されます 以下のスクリーンショットに示すように、アクセス許可
結論
おめでとう! chmod
で多くのトピックを取り上げました 再帰的。これで、万能の chmod
で発生する厄介な権限の問題に取り組む準備が整いました。 道具。再帰 (-R
) の力を活用する方法も学びました。 ) オプション。
chmod
をどのように実装する予定ですか 次にファイルやディレクトリのアクセス許可を管理する必要が生じたときに役立つ多用途の機能はありますか?