Linuxでchmodコマンドを使用する方法
Linuxのchmod
コマンドを使用して、ファイルへのアクセス、ディレクトリの検索、およびスクリプトの実行を実行できるユーザーを制御します。このコマンドは、Linuxファイルのアクセス許可を変更します。これは、一見複雑に見えますが、機能がわかれば実際には非常に単純です。
chmodはファイルパーミッションを変更します
Linuxでは、ファイルまたはディレクトリに対して誰が何を実行できるかは、一連のアクセス許可によって制御されます。3セットの権限があります。1つはファイルの所有者用、もう1つはファイルのグループのメンバー用、そして最後のセットは他のすべてのユーザー用です。
権限は、ファイルまたはディレクトリで実行できるアクションを制御します。これらは、ファイルの読み取り、変更、またはスクリプトまたはプログラムの場合は実行を許可または禁止します。ディレクトリの場合、権限によって、ディレクトリにアクセスできるcd
ユーザーと、ディレクトリ内のファイルを作成または変更できるユーザーが管理されます。
このchmod
コマンドを使用して 、これらの各権限を設定します。ファイルまたはディレクトリに設定されている権限を確認するには、を使用できますls
。
ファイルパーミッションの表示と理解
-l
(長い形式)オプションを使用して、ls
ファイルとディレクトリのファイル権限を一覧表示できます。
ls -l
各行の最初の文字は、リストされているエントリーのタイプを識別します。ダッシュ(-
)の場合はファイルです。文字のd
場合はディレクトリです。
次の9文字は、3セットの権限の設定を表します。
- 最初の3文字は、ファイルを所有するユーザーのアクセス許可(ユーザーアクセス許可)を示します。
- 真ん中の3文字は、ファイルのグループのメンバーのアクセス許可(グループアクセス許可)を示します。
- 最後の3文字は、最初の2つのカテゴリに属さないユーザーのアクセス許可(その他のアクセス許可)を示しています。
権限の各セットには3文字があります。文字は、いずれかの権限の有無を示すインジケータです。ダッシュ(-
)または文字のいずれかです。文字がダッシュの場合は、許可が与えられていないことを意味します。文字がある場合r
、w
またはx
、その権限が付与されています。
文字は以下を表します:
- r:読み取り権限。ファイルを開いて、その内容を表示できます。
- w:書き込み権限。ファイルは編集、変更、および削除できます。
- x:実行権限。ファイルがスクリプトまたはプログラムの場合、実行(実行)できます。
例えば:
-
---
権限がまったく付与されていないことを意味します。 -
rwx
完全な権限が付与されたことを意味します。読み取り、書き込み、および実行のインジケーターはすべて存在します。
スクリーンショットでは、最初の行はd
。で始まります。この行は、「アーカイブ」と呼ばれるディレクトリを参照しています。ディレクトリの所有者は「dave」であり、ディレクトリが属するグループの名前は「dave」とも呼ばれます。
次の3文字は、このディレクトリのユーザー権限です。これらは、所有者が完全な権限を持っていることを示しています。r
、w
、およびx
文字がすべて存在しています。これは、ユーザーdaveがそのディレクトリの読み取り、書き込み、および実行のアクセス許可を持っていることを意味します。
3文字の2番目のセットはグループ権限であり、これらはr-x
です。これらは、daveグループのメンバーがこのディレクトリの読み取りおよび実行権限を持っていることを示しています。つまり、ディレクトリ内のファイルとその内容を一覧表示し、そのディレクトリにcd
(実行)することができます。書き込み権限がないため、ファイルを作成、編集、削除することはできません。
3文字の最終セットも r-x
です。これらのアクセス許可は、最初の2セットのアクセス許可によって管理されていないユーザーに適用されます。これらの人々(「その他」と呼ばれる)は、このディレクトリに対する読み取りおよび実行権限を持っています。
したがって、要約すると、グループメンバーなどは読み取りおよび実行のアクセス許可を持っています。所有者であるdaveというユーザーにも、書き込み権限があります。
(mh.shスクリプトファイルを除く)他のすべてのファイルについて、daveとdaveグループのメンバーはファイルの読み取りおよび書き込みプロパティを持ち、他のファイルは読み取り権限のみを持ちます。
mh.shスクリプトファイルの特殊なケースでは、所有者のdaveとグループメンバーには読み取り、書き込み、および実行のアクセス許可があり、その他のメンバーには読み取りと実行のアクセス許可のみがあります。
パーミッション構文を理解する
chmod
権限を設定するために使用するには、次のように伝える必要があります。
- 誰: 誰に権限を設定するか。
- 何:どのような変更を加えていますか?権限を追加または削除しますか?
- どちら:どの権限を設定していますか?
インジケーターを使用してこれらの値を表しu+x
、「u」は「user」(who)、「+」はadd(what)、「x」は実行権限(which)などの短い「permissionsステートメント」を作成します。 。
使用できる「who」値は次のとおりです。
- u:ユーザー。ファイルの所有者を意味します。
- g:グループ。ファイルが属するグループのメンバーを意味します。
- o:その他、
u
およびg
権限によって管理されていない人を意味します。 - a:すべて、上記のすべてを意味します。
これらのいずれも使用さchmod
れていない場合は、「a
」が使用されたかのように動作します。
使用できる「what」値は次のとおりです。
- –:マイナス記号。権限を削除します。
- +:プラス記号。許可を与えます。権限が既存の権限に追加されます。この権限とこの権限のみを設定する
=
場合は、以下で説明するオプションを使用してください。 - =:等号。権限を設定し、他のユーザーを削除します。
使用できる「which」値は次のとおりです。
- r:読み取り権限。
- w:書き込み権限。
- x:実行権限。
権限の設定と変更
全員が完全なアクセス許可を持っているファイルがあるとしましょう。
ls -l new_ file.txt
ユーザーdaveには読み取りと書き込みのアクセス許可があり、グループと他のユーザーには読み取りアクセス許可のみが必要です。次のコマンドを使用して実行できます。
chmod u = rw、og = r new_file.txt
「=」演算子を使用すると、既存の権限がすべて消去され、指定された権限が設定されます。
このファイルの新しい権限を確認しましょう:
ls -l new_file.txt
予想どおり、既存の権限が削除され、新しい権限が設定されました。
既存の権限設定を削除せずに権限を追加するのはどうですか?それも簡単にできます。
編集が終了したスクリプトファイルがあるとします。すべてのユーザーが実行できるようにする必要があります。現在の権限は次のようになります。
ls -l new_script.sh
次のコマンドを使用して、すべてのユーザーの実行権限を追加できます。
chmod a + x new_script.sh
権限を見ると、実行権限がすべてのユーザーに付与されており、既存の権限は引き続き有効であることがわかります。
ls -l new_script.sh
「a + x」ステートメントに「a」がなくても、同じことを達成できたはずです。次のコマンドも同様に機能します。
chmod + x new_script.sh
複数のファイルのアクセス許可を設定する
複数のファイルに一度に権限を適用できます。
これらは、現在のディレクトリ内のファイルです。
ls -l
「.page」拡張子の付いたファイルから「その他」のユーザーの書き込み権限を削除するとします。これは、次のコマンドで実行できます。
chmodまたは* .page
どのような効果があったかを確認しましょう。
ls -l
ご覧のとおり、「その他」のカテゴリのユーザーの「.page」ファイルから読み取り権限が削除されています。他のファイルは影響を受けていません。
サブディレクトリにファイルを含めたい場合は、-R
(再帰的)オプションを使用できます。
chmod-Rまたは* .page
数値の速記
もう1つの使用方法chmod
は、所有者、グループ、およびその他の人に付与する権限を3桁の数字として提供することです。左端の数字は、所有者の権限を表します。中央の数字は、グループメンバーの権限を表します。右端の数字は、他のユーザーの権限を表します。
使用できる数字とその意味は次のとおりです。
- 0:(000)許可なし。
- 1:(001)実行権限。
- 2:(010)書き込み許可。
- 3:(011)書き込みおよび実行権限。
- 4:(100)読み取り許可。
- 5:(101)読み取りおよび実行権限。
- 6:(110)読み取りおよび書き込み権限。
- 7:(111)読み取り、書き込み、および実行のアクセス許可。
3つの権限のそれぞれは、10進数に相当する2進数のビットの1つで表されます。したがって、5はバイナリで101であり、読み取りと実行を意味します。2はバイナリで010であり、書き込み許可を意味します。
この方法を使用して、必要なアクセス許可を設定します。これらの権限を既存の権限に追加しません。したがって、読み取りと書き込みのアクセス許可がすでに設定されている場合は、7(111)を使用して実行アクセス許可を追加する必要があります。1(001)を使用すると、読み取りおよび書き込み権限が削除され、実行権限が追加されます。
他のカテゴリのユーザーの「.page」ファイルに読み取り権限を追加してみましょう。ユーザーとグループの権限も設定する必要があるため、それらを既存の権限に設定する必要があります。これらのユーザーはすでに読み取りと書き込みのアクセス許可を持っています。これは6(110)です。「その他」に読み取りとアクセス許可を持たせたいので、4(100)に設定する必要があります。
次のコマンドはこれを実行します。
chmod 664 * .page
これにより、ユーザー、グループメンバー、その他に必要な権限が必要なものに設定されます。ユーザーとグループメンバーのアクセス許可は以前の状態にリセットされ、他のメンバーには読み取りアクセス許可が復元されます。
ls -l
高度なオプション
マニュアルページを読むchmod
と、SETUIDビットとSETGIDビット、および制限付き削除または「スティッキー」ビットに関連するいくつかの高度なオプションがあることがわかります。
必要なケースの99%については、chmod
ここで説明するオプションで対応できます。