UNIXでパーミッション(アクセス権)を変更するためのコマンド、およびUNIX API。
コマンドはchmod(1)、APIはchmod(2)と呼び分けられる。
APIは次のものが一般的に使われる。
#include <sys/stat.h>
int chmod(const char *path, mode_t mode);
int fchmod(int fildes, mode_t mode);
パーミッションはmode_t型であり、多くのシステムではunsigned long型からのtypedefである。
コマンドは多くの環境で、「/bin/chmod」にある。
chmod [options] mode file...
これは引数を解読し、UNIX APIを呼び出す処理を実現させるソフトウェアである。
現行のUNIXおよび互換環境では、アクセス権は内部的に16ビットの整数として管理されている。
APIは、この数値のみを受け取る。コマンドは使いやすいように様々な構成を認めており、最終的には数値を作成してAPIに与えることになる。
chmodコマンドに対し、アクセス権を数値で与える場合は内部表現に対応した8進数で指定する。
chmodコマンドに対し、アクセス権をシンボルで与える場合、引数の一般的な書式は次のとおりとなる。
[ugoa...][[+-=][rwxXstugo...]...][,...]
数値の使用例としては、たとえばchmod 644 moe のようにすると、ファイルmoeは、"-rw-r--r--" となり、誰でも読めるが、書けるのは所有者だけとなる。
シンボルでの使用例としては、chmod +x moe のようにすると、ファイルmoeに実行のパーミッションを付けることができる。