パーミッション

バージョン管理ソフトを使えというツッコミはともかくとして。

さて本題ですが特殊なパーミッションというのは何があるのか? ですが,chmodコマンドの日本語マニュアルを参照するとこういう記述があります.

特別なアクセス権

1000 プログラムコードをスワップに維持
2000 実行時にグループ ID を設定
4000 実行時にユーザー ID を設定

1000は使ったことがないのでコメントかトラックバックでいい例題を教えてください(苦笑 2000と4000はそれぞれオーナーユーザーあるいはグループはディレクトリに付加すると,中でファイルやディレクトリを作成するとオーナー情報を継承するというイメージになります.

む、sticky bit って案外知られてないのか?1000 は sticky bit と呼ばれるやつで、ディレクトリに設定しておくと、配下のファイル・ディレクトリはそのファイル・ディレクトリのオーナーじゃないと削除できなくなる(本来ならディレクトリの書き込み権限があれば配下のファイルを削除できる)。みんな自由に書き込めるけど、他人のファイルは消せないようにしたい場合に設定する。典型的には /tmp がそう。

% stat /tmp
  File: `/tmp'
  Size: 2048            Blocks: 4          IO Block: 4096   directory
Device: 7500h/29952d    Inode: 134145      Links: 5
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-02-23 16:41:18.000000000 -0500
Modify: 2007-02-23 17:54:00.000000000 -0500
Change: 2007-02-23 17:54:00.000000000 -0500

ちなみに、2000, 4000 はそれぞれ sgid bit, suid bit と呼ばれ、実行ファイルに設定しておくと、実行時の実効ユーザ(euid)、実効グループ(egid)がファイルの所有ユーザ、所有グループになる。passwd なんかは suid bit が有効になっていたりする。

追記

あとで、気付いたんだけれども。

余談からですが,パーミッションを3桁の8進数(755とか666とか)で表す人がいますが,実はそもそもパーミッションは24ビットではなく,もっと多い桁数なので4桁必要です.

8進数3桁は 9 bits だし、4桁でも 12 bits。さて、どこから 24 bits という数字が?(8進数)×(3桁)かな。
ちなみに、chmod の man を読むと

ファイルのアクセス権は内部的に 16 ビットの整数で保持されている。

と書いてある。24 bits もない。