Chmod

chmodは、UNIXおよびUNIX系オペレーティングシステムにおけるシェルコマンドの一種である。ファイルやディレクトリのファイルモードを変更するのに使われる。

1. 歴史
-----

chmod}} コマンドは、AT&T の最初の UNIXに既に備わっており、今も UNIX 系オペレーティングシステムで使われている。

2. 使用法
------

chmod}} コマンドのオプション形式は次の通り。

$ chmod [//options//] //mode// //file1// ...

現在のパーミッション設定を見るには、次のように入力する。

$ ls -l

3. オプション
--------

主なオプションとして、次のものがある。

-R}}: 再帰的にディレクトリとその配下のファイル群のモードを変更する。
-v}}: Verboseモード。処理中の全ファイル名をリスト表示する。

4. 文字列によるモード指定
--------------

chmod}} では、全パーミッションと特殊モードを mode パラメータで表現する。ファイルやディレクトリのモードを指定する1つの方法としてシンボリックモードがある。シンボリックモードは、3つの部分からなる文字列で表される。

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

references はクラスを指定するのに使われる。references が指定されない場合、全クラスを意味する。以下の文字を使って指定する。

operator はモードの処理方法を指定する。

modes はモードを指定する。基本パーミッションに対応して3つの基本モードがある。

これら3要素で構成される文字列がシンボリックモードでのパーミッション指定として認識される。複数の変更があるときは、それらをカンマで連結して指定すればよい。

4.1. 例
------

次の例は、sample}} という名前のファイルまたはディレクトリについて、ユーザクラスおよびグループクラスのリードパーミッションとライトパーミッションを付与するものである。 $ chmod ug+rw sample $ ls -ld sample drw-rw---- 2 unixguy unixguy 96 Dec 8 12:53 sample

次の例は、全パーミッションを削除するもので、sample}} は読み出すことも書き込むことも実行することもできなくなる。 $ chmod a-rwx sample $ ls -l sample

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2 unixguy unixguy 96 Dec 8 12:53 sample<WtXmlEndTag />

次の例は、ユーザおよびグループのパーミッションをリードと実行だけに設定する。

コマンド実行前の sample のパーミッション $ ls -ld sample drw-rw---- 2 unixguy unixguy 96 Dec 8 12:53 sample $ chmod ug=rx sample $ ls -ld sample dr-xr-x--- 2 unixguy unixguy 96 Dec 8 12:53 sample

5. 八進数によるモード指定
--------------

chmod}} コマンドは、三桁か四桁の八進数でモードを指定できる。これを絶対モード指定と呼ぶ。例えば、次のように指定する。

$ chmod 0664 sample

sample というファイルの setuid}}、setgid}}、sticky}} ビットが設定されていない場合、これは以下と等価である。

$ chmod 664 sample

あるいは

$ chmod +r,-x,ug+w sample

6. 特殊モード
--------

chmod}} コマンドは、ファイルやディレクトリの追加パーミッションも変更可能である。シンボリックモードでは s}} が //setuid// と //setgid// モードを表し、t}} が //sticky// モードを表す。それぞれ、特定のクラスでのみ有効である。詳しくはファイルパーミッションを参照されたい。

多くのオペレーティングシステムでは絶対モードでの特殊モード指定が可能だが、一部では不可能なOSもあり、その場合はシンボリックモードでしか指定できない。

7. 例
----

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}} – u=}}rwx ,go=}}rx }} と等価。0}} は特殊モードを指定しないことを意味する。
chmod 4755 file}} – 4}} は //setuid// を意味する。
find path/ -type d -exec chmod a-x } \;}} – path/ 配下の全ディレクトリについて、a-x を設定する
find path/ -type d -exec chmod 777 } \;}} – path/ 配下の全ディレクトリについて、全パーミッションを付与する
chmod -R u+rwX,g-rwx,o-rwx }} – 所有者パーミッションはディレクトリについては rwx、ファイルについては rw を設定し、それ以外のパーミッションは --- とする。]
chmod 777 file}} - すべての利用者にすべての権限を付与

8. 脚注
-----

9. 関連項目
-------

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

10. 外部リンク
---------

[1]
[2]
[3] - アクセス制御リストもサポートしている。
[4] — Windows の ACL と CHMOD のコンバーター