| 原作者 | AT&T ベル研究所 |
|---|---|
| 開発者 | さまざまなオープンソースおよび商用開発者 |
| 初回リリース | 1971年11月3日 |
| 書かれた | プラン9: C |
| オペレーティング·システム | Unix、Unix ライク、Plan 9、Inferno、IBM i |
| プラットフォーム | クロスプラットフォーム |
| タイプ | 指示 |
| ライセンス | coreutils : GPLv3 プラン 9: MIT ライセンス |
UnixおよびUnix系 オペレーティングシステムでは、chmodはファイルシステムオブジェクト(ファイルとディレクトリ)のアクセス許可と特殊モードフラグ(setuid、setgid、およびstickyフラグ)を変更するために使用されるコマンドおよびシステムコールです。これらはもともと総称してモードと呼ばれていました[1] 。chmodという名前は、ch ange mod eの略語として選ばれました。[2]
歴史
chmodコマンドは、 chmodシステム コール とともにAT&T Unixバージョン 1で初めて登場しました。
システムのユーザー数とユーザーの種類が増えるにつれて、柔軟性を高めるために、これらの最も基本的なモードに加えて、 アクセス制御リスト[3]が多くのファイルシステムに追加されました。
GNU coreutilsにバンドルされているchmodのバージョンは、David MacKenzie と Jim Meyering によって作成されました。[4]このコマンドは、一般的な GNU Unix ライクなユーティリティのネイティブWin32ポートのUnxUtilsコレクションの一部として、Microsoft Windows用の個別のパッケージとして利用できます。 [5] chmodコマンドは、 IBM iオペレーティング システムにも移植されています。[6]
コマンド構文
このセクション全体を通じて、userはファイルの所有者を指します。これは、コマンドの記号形式では「other」との混同を避けるために 「 u 」が使用されることを思い出させるためです。
ファイルの権限を変更できるのは、ユーザーまたはスーパーユーザー (root) のみである ことに注意してください。
chmod [options] mode[,mode] file1 [file2 ...][7]
通常実装されるオプションは次のとおりです。
-R再帰的、つまりサブディレクトリ内のオブジェクトを含めます。-v詳細、変更されたオブジェクトを表示します (変更されていないオブジェクトは表示されません)。
シンボリック リンクが指定されている場合は、ターゲット オブジェクトが影響を受けます。シンボリック リンク自体に直接関連付けられているファイル モードは通常使用されません。
ファイル モードを表示するには、lsまたはstatコマンドを使用できます。
$ ls -l findPhoneNumbers.sh
-rwxr-xr-- 1 ドイツ人スタッフ 823 12 月 16 日 15:03 findPhoneNumbers.sh
$ stat -c %a findPhoneNumbers.sh
754
r、、およびwは、それぞれ読み取り、書き込み、および実行アクセスを指定します。 ls -lx表示の最初の文字はオブジェクト タイプを示します。ハイフンはプレーン ファイルを表します。スクリプトfindPhoneNumbers.shは、ユーザーdgermanによって読み取り、書き込み、および実行できます。また、 staffグループのメンバーによって読み取りおよび実行できます。その他のユーザーは読み取りのみ可能です。
chmod権限の主な部分:
例えば:rwxr-x---
3 文字の各グループは、各クラスの権限を定義します。
- 左端の 3 つの文字は、 Userクラス (つまり、ファイル所有者)
rwxの権限を定義します。 - 真ん中の3文字は、グループクラス(つまり、ファイルを所有するグループ
r-x)の権限を定義します。 - 右端の 3 文字は、その他
---クラスの権限を定義します。この例では、ファイルの所有者ではなく、グループのメンバーでもない(つまり、その他クラスに属する) ユーザーに、ファイルにアクセスする権限はありません。
数値による権限
chmodの数値形式は、最大 4 桁まで受け入れます。右端の 3 桁は、ファイル ユーザー、グループ、その他の権限を定義します。4 桁を指定する場合、オプションの先頭桁は、特別なsetuid、setgid、およびstickyフラグを指定します。右端の 3 桁の各桁は、それぞれ「読み取り」、「書き込み」、「実行」権限を制御するバイナリ値を表します。値が 1 の場合、クラスはそのアクションを許可され、0 の場合、許可されません。
たとえば、次のこと754が許可されます:
- Userクラスの場合、「読み取り」(4)、「書き込み」(2)、「実行」(1)であり、つまり7(4 + 2 + 1)です。
- グループクラスの「読み取り」(4)と「実行」(1)、つまり5(4 + 1)。
- その他クラスについては「読み取り」(4)のみ。
数値コードは、奇数の場合(つまり1、、、、または)にのみ実行を許可します。数値コードは、以上(つまり、、、、または)にのみ「読み取り」を許可します。数値コードは3、、、、、または の場合にのみ「書き込み」を許可します。
57445672367
数値例
プログラマーが ファイルを更新 できるように権限を変更します。
$ ls -l ファイル
-rw-r--r-- 1 jsmith プログラマーズ 57 Jul 3 10:13 ファイル
$ chmod 664ファイル
$ ls -lファイル
-rw-rw-r-- 1 jsmith プログラマーズ 57 Jul 3 10:13 ファイル
setuid、setgid、およびstickyビットが指定されていないため、これは次と同等です。
$ chmod 0664ファイル
シンボリックモード
chmodコマンドは、より細かい記号表記法も受け入れます。 [8]これにより、他のモードを変更せずに特定のモードを変更することができます。記号モードは3つのコンポーネントで構成され、これらが組み合わされて1つのテキスト文字列を形成します。
$ chmod [参照][演算子][モード]ファイル...
ユーザーのクラスは、権限が適用されるユーザーを区別するために使用されます。クラスが指定されていない場合は、「すべて」が暗黙的に指定されます。クラスは、次の文字の 1 つ以上で表されます。
chmodプログラムは、演算子を使用してファイルのモードを調整する方法を指定します。次の演算子が受け入れられます。
モードは、指定されたクラスに付与または削除される権限を示します。基本権限に対応する基本モードは 3 つあります。
複数の変更は、複数のシンボリックモードをコンマ(スペースなし)で区切ることで指定できます。ユーザーが指定されていない場合は、umask がchmodチェックされ、 umask に設定されているビットが影響を受けないことを除いて、「a 」が指定されたのと同じ効果が得られます。 [9]
象徴的な例
- ディレクトリのグループ ( g ) アクセス モードに書き込み権限 ( w )を追加して、同じグループ内のユーザーがファイルを追加できるようにします。
$ ls -ld dir # chmod 前のアクセス モードを表示drwxr-xr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir $ chmod g+w dir
$ ls -ld dir # chmod 後のアクセス モードを表示drwxrwxr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir
- すべてのクラス ( a ) の書き込み権限 ( w ) を削除し、誰もファイルに書き込めないようにします。
$ ls -l ourBestReferenceFile
-rw-rw-r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile
$ chmod a-w ourBestReferenceFile
$ ls -l ourBestReferenceFile
-r--r--r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile
- ユーザーとグループ ( ug )の権限を、 referenceLib に対する読み取りと実行 ( rx ) のみ (書き込み権限なし) に設定し、誰もファイルを追加できないようにします。
$ ls -ld ReferenceLib
drwxr----- 2 ebowman NORTHREGION 96 4月 8 12:53 ReferenceLib
$ chmod ug = rx ReferenceLib
$ ls -ld ReferenceLib
dr-xr-x--- 2 ebowman NORTHREGION 96 4月 8 12:53 ReferenceLib
- sampleという名前のファイルまたはディレクトリのユーザーおよびグループ クラスに読み取りおよび書き込み権限を追加します。
$ chmod ug+rw サンプル
$ ls -ld サンプル
drw-rw---- 2 rsanchez 予算 96 12月 8日 12:53 サンプル
- すべての権限を削除し、 sampleという名前のファイルを誰も読み書きまたは実行できないようにします。
$ chmod a-rwx サンプル
$ ls -l サンプル
---------- 2 rswven 計画 96 12月 8日 12:53 サンプル
- ユーザーとグループの権限を、sampleに対する読み取りと実行のみ(書き込み権限なし)に変更します。
$ # コマンド前のサンプルファイル権限
$ ls -ld sample
drw-rw---- 2 oschultz warehousing 96 Dec 8 12:53 NY_DBs
$ chmod ug = rx sample
$ ls -ld sample
dr-xr-x--- 2 oschultz warehousing 96 Dec 8 12:53 NJ_DBs
- 次の 1 つのコマンドだけで、アイテムをユーザーに対して書き込み可能に設定し、他のユーザーに対しては読み取り専用に設定します。
$ chmod u = rw,go = rサンプル
$ ls -ldサンプル
drw-r--r-- 2 oschultz warehousing 96 12月 8日 12:53 サンプル
特殊モード
chmodコマンドは、ファイルまたはディレクトリの追加権限または特殊モードを変更することもできます。シンボリック モードでは、setuidモードとsetgidモードを表すために「 s 」が使用され、スティッキーモードを表すために「 t 」が使用されます。モードは、他のクラスが指定されているかどうかに関係なく、適切なクラスにのみ適用されます。
ほとんどのオペレーティング システムでは、特殊モードの数値指定 (特に 8 進数指定) をサポートしていますが、サポートしていないオペレーティング システムもあります。これらのシステムでは、シンボリック モードのみを使用できます。
コマンドラインの例
参照
- ファイルシステムの権限
chattrLinuxシステム上のファイルまたはディレクトリの属性を変更するために使用されるコマンドchown、Unix系システムでファイルやディレクトリの所有者を変更するために使用されるコマンドchgrpUnix系システムでファイルやディレクトリのグループを変更するために使用するコマンドcacls、 Windows NTおよびその派生製品で使用される、ファイルまたはディレクトリに関連付けられたアクセス制御リストを変更するコマンド。attribumaskUnix系システムでファイルやディレクトリを作成する際のモード(権限)を制限します。- ユーザー識別子
- グループ識別子
- Unixコマンドのリスト
参考文献
- ^長い形式で ファイルをリストすると、モード/権限が表示されます。
- ^ 「chmod のチュートリアル」。catcode.com。
- ^ 「AIX 5.3 システム管理」。IBMナレッジ センター。IBM。2015年8 月 30 日閲覧。
- ^ "chmod(1): ファイルモードビットを変更する - Linux man ページ". linux.die.net .
- ^ 「いくつかの GNU ユーティリティのネイティブ Win32 ポート」unxutils.sourceforge.net。
- ^ IBM . 「IBM System i バージョン 7.2 プログラミング Qshell」(PDF) . IBM . 2020 年9 月 5 日閲覧。
- ^ 「chmod マニュアルページ(例と計算機付き) - Linux - SS64.com」。ss64.com。
- ^ 「AIX 5.5 コマンド・リファレンス」。IBM Knowledge Center。IBM。2015年8 月 30 日閲覧。
- ^ 「umask、chmod、777 の 8 進数パーミッションによるパーミッション マスキング」。teaching.idallen.com。
外部リンク
- : ファイルモードの変更 – FreeBSD一般コマンドマニュアル
- – Plan 9プログラマーズマニュアル、第 1 巻
- – インフェルノ一般コマンドマニュアル
- chmod — GNU coreutilsのマニュアル ページ。
- GNU「パーミッション設定」マニュアル
- CHMOD-Win 3.0 — フリーウェアの Windows ACL ↔ CHMOD コンバーター。
- オンラインの「ライブ」サンプルを使った初心者向けチュートリアル
