Chmod

chmodコマンドとは



`chmod`(change mode)は、UNIXおよびUNIXオペレーティングシステムで、ファイルやディレクトリのアクセス権限(パーミッション)を変更するためのシェルコマンドです。このコマンドを使用することで、どのユーザーがファイルやディレクトリに対して読み取り、書き込み、実行の操作を行えるかを細かく制御できます。

歴史



`chmod`コマンドは、初期のUNIXシステムであるAT&TResearch Unix V1にすでに存在していました。このコマンドは、UNIX系OSの基本的なツールとして長年にわたり使用され続けています。

使用法



`chmod`コマンドの基本的な構文は以下の通りです。

bash
$ chmod [options] mode file1 ...


ここで`options`はコマンドの動作を調整するためのオプションであり、`mode`は変更するパーミッション設定、`file1 ...`は対象となるファイルやディレクトリです。

現在のパーミッション設定を確認するには、`ls -l`コマンドを使用します。

bash
$ ls -l


オプション



`chmod`コマンドには、いくつかの便利なオプションがあります。

`-R`: ディレクトリとその配下のファイルやディレクトリに対して再帰的にパーミッションを変更します。
`-v`: コマンドが処理するファイル名を詳細に表示します。

モード指定



`chmod`コマンドでは、パーミッション設定を`mode`パラメータで指定します。モード指定には、主にシンボリックモードと八進数モードの2種類があります。

シンボリックモード


シンボリックモードは、3つの部分からなる文字列でパーミッションを指定する方法です。

bash
$ chmod [references][operator][modes] file1 ...


references: パーミッションを適用する対象(ユーザー、グループ、その他)を指定します。指定しない場合は、すべての対象が指定されます。
`u`: ユーザー(所有者)
`g`: グループ
`o`: その他
`a`: 全員(ユーザー、グループ、その他)

operator: どのようにパーミッションを変更するかを指定します。
`+`: パーミッションを追加
`-`: パーミッションを削除
`=`: パーミッションを設定

modes: 設定するパーミッションを指定します。
`r`: 読み取り権限
`w`: 書き込み権限
`x`: 実行権限

複数の変更を一度に行う場合は、カンマ`,`で区切って指定します。

八進数モード


八進数モードでは、3桁または4桁の八進数でパーミッションを指定します。各桁は、それぞれユーザー、グループ、その他のパーミッションを表し、4桁の場合は先頭桁が特殊モードを表します。

各パーミッションは以下の値で表されます。

`4`: 読み取り権限
`2`: 書き込み権限
`1`: 実行権限

これらの値を足し合わせることで、具体的なパーミッションを表現します。例えば、`6`は読み取り(4)と書き込み(2)の両方の権限を持つことを意味します。

特殊モード



`chmod`コマンドは、特殊モード(setuid、setgid、sticky bit)も変更できます。

`s`: setuidまたはsetgidを設定します。ファイルの場合、実行時に所有者またはグループの権限で実行されます。ディレクトリの場合、そのディレクトリに作成されるファイルやサブディレクトリが親ディレクトリのグループIDを継承します。
`t`: sticky bitを設定します。ディレクトリの場合、そのディレクトリ内のファイルは、ファイルの所有者、ディレクトリの所有者、またはrootユーザーのみが削除できます。

シンボリックモードでは`s`と`t`で、八進数モードでは先頭の桁でこれらの特殊モードを指定します。



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

`chmod +r file`: 全員に読み取り権限を付与します。
`chmod -x file`: 全員の実行権限を削除します。
`chmod u=rw,go= file`: 所有者には読み取り/書き込み権限を設定し、グループおよびその他には権限を削除します。
`chmod +rw file`: 全員に読み取り/書き込み権限を付与します。
`chmod -R u+w,go-w docs/`: `docs/`ディレクトリとその配下のすべてのファイルについて、所有者には書き込み権限を追加し、グループとその他からは書き込み権限を削除します。
`chmod 666 file`: 全員に読み取り/書き込み権限を付与します。
`chmod 0755 file`: 所有者には読み取り/書き込み/実行権限、グループとその他には読み取り/実行権限を付与します。最初の`0`は特殊モードを設定しないことを意味します。
`chmod 4755 file`: setuidを設定します。
`find path/ -type d -exec chmod a-x {} \;`: `path/`以下のすべてのディレクトリから実行権限を削除します。
`find path/ -type d -exec chmod 777 {} \;`: `path/`以下のすべてのディレクトリにすべての権限を付与します。
`chmod -R u+rwX,g-rwx,o-rwx `: ディレクトリの場合は所有者パーミッションを`rwx`に、ファイルの場合は`rw`に設定し、グループとその他のパーミッションを削除します。
`chmod 777 file`: 全員にすべての権限を与えます。

関連項目



ファイルパーミッション
`chown`: ファイルやディレクトリの所有者を変更するコマンド。
`chgrp`: ファイルやディレクトリのグループを変更するコマンド。
`cacls`: Microsoft Windows NTおよびその後継OSでのアクセス制御リスト (ACL) の変更を行うコマンド。
ユーザー識別子とグループ識別子

外部リンク



chmod(1) - Linux JM Project
chmod(1) - OpenBSD(英語)
chmod(1) - HMUGリファレンスマニュアル(英語)
chmod(1) - Debianリファレンスマニュアル(日本語)
GNU "Setting Permissions" manual
Solaris 9 chmod man page(英語)
Mac OS X chmod man page
* CHMOD-Win 3.0 — Windows の ACL と CHMOD のコンバーター(フリーウェア)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。