logo

Linux/Unix の Chmod コマンドと例

Linuxのchmodコマンドは、ファイルやディレクトリのアクセス権限を変更するために使用します。の略です モードを変更する 。シンボリックリンクの権限を変更することはできません。さらに、再帰的なディレクトリ トラバーサルで発生するシンボリック リンクは無視されます。

の中に Linux ファイル システムでは、各ファイルは特定の所有者に関連付けられ、さまざまなユーザーにアクセス許可が与えられます。ユーザー クラスは次のとおりです。

  • 所有者
  • グループメンバー
  • その他(他のみんな)

Linuxにおけるファイルパーミッションは以下の3種類です。

  • 読む(r)
  • 書く(w)
  • 実行(x)

Chmod の簡単な歴史

まず、chmod コマンドは、AT&T UNIX バージョン 1 では chmod システム コールで表されます。システムの種類とユーザー数が増加したため、柔軟性を高めるために、アクセス制御リストはこれらの最も一般的なモードに含まれるいくつかのファイル システムに組み込まれました。

GNU coreutils で調整された chmod バージョンは、Jim Meyering と David MacKenzie によって指定されました。このコマンドは、基本的な GNU Unix 類似ユーティリティの UnxUtils ネイティブ Win32 ポート コレクションの要素として、Microsoft Windows 用の分離パッケージとして存在します。また、chmod コマンドが IBM i OS に同梱されています。

chmod コマンドを使用してファイルのアクセス許可を変更する方法を見てみましょう。

構文:

git status -s

chmod コマンドの基本的な構文は次のとおりです。

 chmod 

一般的に実装されるオプションは次のとおりです。

    -R:これは再帰的、つまりオブジェクトをサブディレクトリに追加することを表します。-で:これは、冗長、変更されたオブジェクトを表示する (未変更のオブジェクトは表示されない) ことを表します。

シンボリック リンクが言及されている場合、ターゲット オブジェクトは影響を受けます。シンボリック リンク自体に直接関連するファイル モードは、通常は使用されません。

chmod 権限の主なコンポーネント:

例えば、 rwxr-x---

3 文字のすべてのグループは、すべてのクラスのアクセス許可を指定します。

    rwx:左端の 3 文字は、ファイル所有者 (つまり、User クラス) のアクセス許可を指定します。処方箋:中央の 3 文字は、ファイルを所有するグループ (つまり、Group クラス) のアクセス許可を指定します。---:右端の 3 文字は、Other クラスのアクセス許可を指定します。ファイル所有者およびグループメンバーではないユーザーはファイルにアクセスできません。

オプション:

chmod コマンドは、次のコマンドライン オプションをサポートしています。

-c、--変更: これは冗長オプションに似ていますが、変更が行われた場合に報告される点が異なります。

ステートメントの対象範囲

-f、--silent、--clean: エラーメッセージを抑制するために使用されます。

-v、--verbose: これは、処理されたすべてのファイルの診断を表示するために使用されます。

--no-preserve-root: これは、特に (デフォルト)、バックスラッシュ記号 (「/」) を処理しないために使用されます。

--preserve-root: このオプションを使用すると、バックスラッシュ (「/」) に対する再帰的な操作は失敗します。

--reference=RFILE: これは、RFILE のモード、または MODE 値を指定するために使用されます。

-R、--再帰的: ファイルやディレクトリを再帰的に変更するために使用されます。

- ヘルプ: 使用方法とサポート オプションの簡単な説明を含むヘルプ マニュアルを表示するために使用されます。

- バージョン: バージョン情報を表示するために使用されます。

ファイル許可の構文

新しいユーザーの場合は、ファイルのアクセス許可の設定に使用されるさまざまな種類の文字に混乱する可能性があります。したがって、chmod コマンドに進む前に、ファイル許可の構文を理解しましょう。

ファイルまたはディレクトリのアクセス許可を設定するには、次のことを指定する必要があります。

  • 誰: 私たちは誰ですか。 (ユーザー)
  • 内容: どのような変更を加えますか (権限の追加または削除など)?
  • どれ: どの権限ですか?

許可ステートメントは、u+x、u-x などのインジケーターで表されます。ここで、「u」は「ユーザー」を表し、「+」は追加を表し、「-」は削除を表し、「x」は実行可能ファイル(どれ)を表します。

文字を文字列Javaに変換

ユーザー値は次のとおりです。

u: ファイルの所有者

g: グループメンバー

○:その他

答え: すべて

権限の種類は r、w、x です。

権限の設定と更新

ファイルのアクセス権を設定するには、chmod コマンドでアクセス権ステートメントを実行します。たとえば、ファイル「Demo.txt」のすべてのユーザーとグループに読み取りおよび書き込み権限を設定したいとします。 chmod コマンドで「u=rw,go=rw Demo.txt」権限ステートメントを渡す必要があります。ファイルのアクセス許可を表示するには、次のコマンドを実行します。

 ls -l Demo.txt 

上記のコマンドは、「Demo.txt」ファイルの現在のファイル権限を表示します。

権限を変更するには、次のコマンドを実行します。

 chmod u=rw,go=rw Demo.txt 

以下の出力を考えてみましょう。

Linux chmod コマンド

上記の出力から、「Demo.txt」のアクセス権限が変更されています。

複数のファイルのアクセス許可を設定する

chmod コマンドを使用すると、複数のファイルのアクセス許可を一度に設定できます。複数のファイルのファイルパーミッションを変更するには、chmod コマンドでファイルパターンを指定します。たとえば、すべてのテキスト ファイルに読み取りおよび書き込み権限を設定する場合は、*. txtのパターンをchmodコマンドで取得します。

現在の作業ディレクトリのすべてのテキスト ファイルのアクセス許可を表示するには、次のコマンドを実行します。

ベルフォードアルゴリズム
 ls -l *.txt 

すべてのテキスト ファイルとそのア​​クセス許可モードが一覧表示されます。以下の出力を考えてみましょう。

Linux chmod コマンド

上記の出力から、多くのファイルは他のユーザーに対して読み取り権限のみを持っています。

他のユーザーの読み取りおよび書き込み権限を設定するには、次のコマンドを実行します。

 chmod o+w *.txt 

他のユーザーのテキスト ファイルの読み取りおよび書き込み権限を設定します。以下の出力を考えてみましょう。

Linux chmod コマンド

数値の省略記法

文字の代わりに数値を使用して権限を指定できます。権限は 3 桁の数値で指定します。左端の数字は所有者 (u) を表し、中央の数字はグループ メンバー (g) を表します。右端の数字はその他の数字 (o) を表します。

次の表は、数字とその権限を表しています。

数字 権限
000 全く許可しません
001 実行権限
010 書き込み権限
011 書き込みおよび実行権限
100 読み取り許可
101 読み取りおよび実行権限
110 読み取りおよび書き込み権限
111 読み取り、書き込み、および実行の権限

シンボリックモード

また、chmod コマンドは、特定のモードを変更できる、より詳細なシンボリック表記を受け入れます。シンボリック モードは 3 つの要素で構成され、これらが結合されて 1 つのテキスト文字列を形成します。

 $ chmod [references] [operator] [modes] file... 

chmod プログラムは、演算子を適用してファイル モードをどのように配置するかを定義します。以下の演算子が承認されています。

オペレーター 説明
+ 記述されたクラスに記述されたものを追加します。
- 記述されたクラスから記述されたモードを削除します。
= これは、記述されたモードが、記述されたクラスに対して同じモードとして作成されることを表します。

モードは、記述されたクラスからどの権限が削除または付与されるかを表します。共通のアクセス許可に関連する主に 3 つの共通モードがあります。

名前 モード 説明
読む r ファイルを読み取るか、ディレクトリの内容を一覧表示します。
書く ディレクトリまたはファイルに書き込みます。
実行する バツ ディレクトリツリーを再帰するか、ファイルを実行します。
特別な実行 バツ 許可ではありませんが、代わりに×の代わりに使用できます。現在のアクセス許可に関係なくディレクトリの実行アクセス許可を使用し、少なくとも実行アクセス許可ビットが設定されているファイルの実行アクセス許可を使用します。これは、 chmod -R a+rx を実装することもできますが、 chmod -R a+rx を使用した場合に実行許可を設定せずに、「+」演算子とともに使用すると便利です。むしろ×で。

複数の変更は、複数の記号モードをカンマで区切ることによって記述できます。 chmod コマンドは、 umask ユーザーが指定されていない場合。

特殊モード

また、chmod コマンドを使用すると、ディレクトリまたはファイルの特別なモードと追加のアクセス許可を変更できます。シンボリック モードでは、「s」を適用して setgid および setuid モードを示し、「t」を適用してスティッキー モードを示します。モードは、他のクラスが言及されているかどうかに関係なく、正しいクラスに対してのみ使用されます。

ほとんどすべてのオペレーティング システムは、特別なモード仕様、特に 8 進数を数値的にサポートしていますが、サポートしていないオペレーティング システムもいくつかあります。これらのシステムにはシンボリック モードのみを適用できます。

コマンドラインの例をいくつか示します。

指示 説明
chmod a+r publicComments.txt すべてのクラス (グループ、所有者、その他) に読み取り権限を追加します。
chmod a-x publicComments.txt すべてのクラスの実行権限が削除されます。
chmod a+rx viewer.sh すべてのクラスに実行権限と読み取り権限が追加されます。
chmod u=rw、g=r、o=internalPlan.txt ユーザーには書き込みおよび読み取り権限を設定し、グループには読み取り権限を設定し、その他にはアクセスを拒否します。
chmod -R u+w、go-w ドキュメント これにより、ディレクトリ docs とその各コンテンツへの書き込み権限が所有者に付与され、他のユーザーとグループの書き込み権限が削除されます。
chmod and=rw groupAgreements.txt グループとユーザーの書き込み権限と読み取り権限を設定します。
chmod 664 グローバル.txt グループとユーザーに書き込み権限と読み取り権限を設定し、その他のユーザーに読み取り権限を与えます。
chmod 744 Show_myCV.sh ユーザーの実行、書き込み、読み取り権限を設定し、グループとその他に読み取り権限を与えます。