UNIX / Linux では、主にディレクトリにスティッキー ビットを設定します。
スティッキー ビットをディレクトリに設定すると、他のユーザーはそのディレクトリ内のファイル (またはサブディレクトリ) を削除したり名前を変更したりできなくなります。
ディレクトリにスティッキー ビットが設定されている場合、そのディレクトリ内のファイルまたはディレクトリを削除または名前変更できるのは、所有者と root ユーザーだけです。
1.ディレクトリにスティッキー ビットを設定する
次の例では、ディレクトリのスティッキー ビットを有効にしています。
chmod コマンドを使用してスティッキー ビットを設定します。 chmod で 8 進数を使用している場合は、以下に示すように、他の番号付き特権を指定する前に 1 を指定してください。以下の例では、rwx パーミッションをユーザー、グループ、その他に付与します (また、ディレクトリにスティッキー ビットを追加します)。
$ chmod 1777 dir
または、以下に示すように chmod コマンドを使用して、スティッキー ビットのみを既存のディレクトリに割り当てることができます (他のユーザー、グループ、およびその他の権限には影響しません)。
$ chmod +t dir
スティッキー ビットがディレクトリに割り当てられると、パーミッションの最後の文字として (t) が表示されます。この例では、drwxrwxrwt です。
$ ls -ld /home/bala/dir drwxrwxrwt 2 bala bala 4096 2011-01-28 14:09 /home/bala/dir $ ls -l dir total 8 -rwxrwxrwx 1 bala bala 20 2011-01-28 14:12 bala.txt -rwxrwxrwx 1 guest guest 41 2011-01-28 14:13 guest.txt
上記の例では、dir はすべてのユーザーに対して rwx 権限を持っているため、他のすべてのユーザーはこのディレクトリの下にファイルまたはディレクトリを作成できます。ただし、dir の下のサブディレクトリまたはファイルが全員に rwx 権限を持っている場合でも、それらの所有者のみがそれらのファイルおよびディレクトリを削除または名前変更できます。スティッキー ビットのため、他のユーザーはそれを削除したり、名前を変更したりできません。
上記の例では、bala.txt にユーザー、グループ、およびその他への rwx があります。ただし、ゲスト ユーザーがファイル bala.txt を削除しようとすると、以下に示すように「操作は許可されていません」というメッセージが表示されます。
$ su guest Password: $ cd /home/bala/dir1 $ rm bala.txt rm: cannot remove `bala.txt': Operation not permitted
/tmp では、デフォルトでスティッキー ビットが有効になっていることに注意してください。今まで気づかなかったかもしれません。 /tmp ディレクトリでスティッキー ビットが有効になっている理由がわかりました。
$ ls -ld /tmp drwxrwxrwt 3 root root 4096 Jan 31 08:29 /tmp
ディレクトリからスティッキー ビットを削除するには、次の手順を実行します。
$ chmod -t dir
2.ファイルにスティッキー ビットを設定
ファイルにスティッキー ビットを設定してもほとんど役に立たず、何もしません。一部の古い *nix フレーバーでは、最初の実行後に、スティッキー ビットが有効な実行可能ファイルがスワップ メモリにロードされ、その後のすべての実行が高速化されます。これはもはや真実ではありません。
ウィキペディアから:
Currently, this behavior is only operative in HP-UX, NetBSD, and UnixWare. Solaris appears to have abandoned this in 2005.[citation needed] The 4.4-Lite release of BSD retained the old sticky bit behavior but it has been subsequently dropped from OpenBSD (as of release 3.7) and FreeBSD (as of release 2.2.1); it remains in NetBSD. No version of Linux has ever supported the traditional behavior.