Linux で chmod コマンドを使用する方法

公開: 2022-10-25
Linux ラップトップの様式化されたターミナル プロンプト
Fatmawati Achmad Zaenuri/Shutterstock.com
Chmod は 3 つの主要な引数を取ります: r、w、x は、それぞれ読み取り、書き込み、および実行を表します。 引数の組み合わせを追加または削除すると、ファイルとフォルダーのアクセス許可が制御されます。 たとえば、chmod +rwx は、スクリプトの読み取り、書き込み、および実行のアクセス許可を追加します。 chmod -wx を実行すると、書き込みと実行の機能が削除されます。

Linux のchmodコマンドを使用して、ファイルにアクセスしたり、ディレクトリを検索したり、スクリプトを実行したりできるユーザーを制御します。 このコマンドは Linux ファイルのアクセス許可を変更します。一見複雑に見えますが、仕組みを理解すれば実際には非常に単純です。

chmod はファイルのパーミッションを変更します

Linux では、ファイルまたはディレクトリに対して誰が何を実行できるかは、一連のアクセス許可によって制御されます。 権限には 3 つのセットがあります。 1 つのセットはファイルの所有者用、もう 1 つのセットはファイルのグループのメンバー用、そして最後のセットはそれ以外の全員用です。

初心者向けの 10 の基本的な Linux コマンド
初心者向けの関連する 10 の基本的な Linux コマンド

アクセス許可は、ファイルまたはディレクトリに対して実行できるアクションを制御します。 それらは、ファイルの読み取り、変更、またはスクリプトまたはプログラムの場合は実行を許可または禁止します。 ディレクトリの場合、アクセス許可は、ディレクトリにcdできるユーザーと、ディレクトリ内のファイルを作成または変更できるユーザーを制御します。

これらの権限をそれぞれ設定するには、 chmodコマンドを使用します。 ファイルまたはディレクトリに設定されている権限を確認するには、 lsを使用できます。

ファイル権限の表示と理解

-l (長い形式) オプションを使用して、 lsにファイルとディレクトリのファイル許可をリストさせることができます。

 ls -l 

各行の最初の文字は、リストされているエントリのタイプを識別します。 ダッシュ ( - ) の場合はファイルです。 文字dの場合、ディレクトリです。

次の 9 文字は、3 つのアクセス許可セットの設定を表します。

  • 最初の 3 文字は、ファイルを所有するユーザーの権限 ( user permissions ) を示します。
  • 真ん中の 3 文字は、ファイルのグループのメンバーの権限 ( group permissions ) を示します。
  • 最後の 3 文字は、最初の 2 つのカテゴリ ( other permissions ) 以外のユーザーの権限を示します。

権限の各セットには 3 つの文字があります。 文字は、いずれかの権限の有無を示す指標です。 それらは、ダッシュ ( - ) または文字のいずれかです。 文字がダッシュの場合は、許可されていないことを意味します。 文字がrw 、またはxの場合、その許可は付与されています。

文字は次を表します。

  • r : 読み取り権限。 ファイルを開くことができ、その内容を表示できます。
  • w : 書き込み権限。 ファイルは、編集、変更、および削除できます。
  • x : 実行権限。 ファイルがスクリプトまたはプログラムの場合は、実行 (実行) できます。

例えば:

  • ---権限がまったく付与されていないことを意味します。
  • rwxは、完全な権限が付与されていることを意味します。 読み取り、書き込み、および実行インジケータがすべて存在します。

このスクリーンショットでは、最初の行がdで始まります。 この行は、「アーカイブ」と呼ばれるディレクトリを参照しています。 ディレクトリの所有者は「dave」で、ディレクトリが属するグループの名前も「dave」と呼ばれます。

次の 3 文字は、このディレクトリのユーザー権限です。 これらは、所有者が完全な権限を持っていることを示しています。 rw 、およびx文字がすべて存在します。 これは、ユーザー dave がそのディレクトリに対する読み取り、書き込み、および実行権限を持っていることを意味します。

2 番目の 3 文字のセットはグループのアクセス許可で、これらはrxです。 これらは、dave グループのメンバーがこのディレクトリの読み取りおよび実行権限を持っていることを示しています。 つまり、ディレクトリ内のファイルとその内容を一覧表示でき、そのディレクトリにcd (実行) できます。 書き込み権限がないため、ファイルを作成、編集、または削除することはできません。

最後の 3 文字セットもrxです。 これらの権限は、最初の 2 つの権限セットによって管理されていないユーザーに適用されます。 これらの人々 (「その他」と呼ばれる) は、このディレクトリに対する読み取り権限と実行権限を持っています。

したがって、要約すると、グループ メンバーと他のユーザーには、読み取りと実行のアクセス許可があります。 所有者である dave というユーザーも、書き込み権限を持っています。

他のすべてのファイル (mh.sh スクリプト ファイルを除く) については、dave と dave グループのメンバーはファイルの読み取りおよび書き込みプロパティを持ち、その他のファイルは読み取りアクセス許可のみを持ちます。

mh.sh スクリプト ファイルの特殊なケースでは、所有者の dave とグループ メンバーは読み取り、書き込み、および実行のアクセス許可を持ち、その他のメンバーは読み取りと実行のアクセス許可のみを持ちます。

アクセス許可の構文について

chmodを使用して権限を設定するには、次のように伝える必要があります。

  • 対象者:権限を設定する対象者。
  • : どのような変更を行っていますか? 許可を追加または削除しますか?
  • どれ: 設定するアクセス許可はどれですか?

これらの値を表すためにインジケーターを使用し、 u+xのような短い「パーミッション ステートメント」を形成します。ここで、「u」は「ユーザー」(誰)、「+」は追加 (何)、「x」は実行パーミッションを意味します。 (どれの)。

使用できる「誰」の値は次のとおりです。

  • u : ユーザー。ファイルの所有者を意味します。
  • g : グループ。ファイルが属するグループのメンバーを意味します。
  • o : その他uおよびgパーミッションによって管理されていない人々を意味します。
  • a : すべて、上記のすべてを意味します。

これらのいずれも使用されていない場合、 chmodは「 a 」が使用されたかのように動作します。

使用できる「何」の値は次のとおりです。

  • : マイナス記号。 権限を削除します。
  • + : プラス記号。 権限を付与します。 権限が既存の権限に追加されます。 このパーミッションのみを設定したい場合は、以下で説明する=オプションを使用します。
  • = : 等号。 権限を設定し、その他を削除します。

使用できる「どの」値は次のとおりです。

  • 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

数値略記

chmodを使用するもう 1 つの方法は、所有者、グループ、およびその他のユーザーに付与するパーミッションを 3 桁の数字で指定することです。 左端の数字は、所有者の権限を表します。 中央の数字は、グループ メンバーの権限を表します。 右端の数字は、その他の権限を表します。

使用できる数字とその意味は次のとおりです。

  • 0: (000) 許可なし。
  • 1: (001) 実行許可。
  • 2: (010) 書き込み許可。
  • 3: (011) 書き込み権限と実行権限。
  • 4: (100) 読み取り許可。
  • 5: (101) 読み取りおよび実行権限。
  • 6: (110) 読み取りおよび書き込み権限。
  • 7: (111) 読み取り、書き込み、および実行権限。

3 つのアクセス許可はそれぞれ、10 進数に相当する 2 進数のビットの 1 つによって表されます。 したがって、2 進数で 101 である 5 は、読み取りと実行を意味します。 2 は 2 進数で 010 であり、書き込み許可を意味します。

この方法を使用して、必要な権限を設定します。 これらのアクセス許可を既存のアクセス許可に追加しないでください。 したがって、読み取りと書き込みのアクセス許可が既に設定されている場合は、7 (111) を使用して実行アクセス許可を追加する必要があります。 1 (001) を使用すると、読み取り権限と書き込み権限が削除され、実行権限が追加されます。

ユーザーのその他のカテゴリの「.page」ファイルに読み取り権限を追加しましょう。 ユーザーとグループのアクセス許可も設定する必要があるため、それらを既存のものに設定する必要があります。 これらのユーザーは、読み取りと書き込みのアクセス許可 (6 (110)) を既に持っています。 「その他」に読み取りとアクセス許可を持たせたいので、それらを 4 (100) に設定する必要があります。

次のコマンドはこれを実現します。

 chmod 664 *.page 

これにより、ユーザー、グループ メンバー、およびその他のユーザーに必要なアクセス許可が、必要なものに設定されます。 ユーザーとグループ メンバーのアクセス許可は元の状態にリセットされ、その他のユーザーは読み取りアクセス許可が復元されます。

 ls -l 

高度なオプション

chmodのマニュアル ページを読むと、SETUID および SETGID ビット、および制限付き削除または「スティッキー」ビットに関連するいくつかの高度なオプションがあることがわかります。

chmodが必要になるケースの 99% は、ここで説明するオプションで対応できます。

関連:開発者および愛好家向けの最高のLinuxラップトップ