スティッキービット(Sticky Bit) - 特殊なアクセス権
スティッキービット(Sticky Bit)という特殊なアクセス権があります。このページでは、スティッキービット(Sticky Bit)について説明します。
Last Update : 2013年07月29日
スティッキービット(Sticky Bit) - 特殊なアクセス権 項目
1. スティッキービット(Sticky Bit)とは
スティッキービット(Sticky Bit)とは、ディレクトリに設定される特殊なアクセス権の事です。
スティッキービット(Sticky Bit)が設定されたディレクトリでは、すべてのユーザーがファイル・ディレクトリを書き込めますが、所有者だけ(rootは除く)しか削除できなくなります。
/tmp ディレクトリは、スティッキービット(Sticky Bit)が設定されています。
2. スティッキービット(Sticky Bit)の確認
スティッキービット(Sticky Bit)を確認します。
# ls -ld /tmp/
drwxrwxrwt 7 root root 4096 7月 29 04:02 /tmp/
その他のアカウントに対しての実行権部分が「t」となっています。ディレクトリにスティッキービット(Sticky Bit)が設定されていると、実行権部分が「t」と表示されます。
3. スティッキービット(Sticky Bit)を設定する
スティッキービット(Sticky Bit)を設定するには、「chmod」コマンドを使用します。
シンボルモードでの設定
シンボルモードスティッキービット(Sticky Bit)を設定するには、「chmod」コマンドで、「その他」の権限に対し「t」を+します。
chmod o+t dir
数字モードでの設定
数字モードでスティッキービットを設定するには、アクセス権を表す数字に「1000」を足します。
chmod 1777 dir
ディレクトリのパーミッションを確認してみます
# ls -ld dir drwxrwxrwt 2 root root 4096 7月 29 08:41 dir その他のアカウントに対する実行権が「t」となっており、スティッキービットが設定されている。
4. 使用例
実際にスティッキービット(Sticky Bit)をディレクトリに設定して動作を確認します。
dirディレクトリを作成し、スティッキービット(Sticky Bit)を設定する。
# mkdir dir # chmod 1777 dir ← スティッキービット(Sticky Bit)を設定 # ls -ld dir drwxrwxrwt 2 root root 4096 7月 29 08:47 dir ← スティッキービット(Sticky Bit)が設定されている
user1でファイルを作成し、パーミッションを777に変更する
# su user1
$ cd dir ← スティッキービット(Sticky Bit)が設定されているディレクトリへ移動
$ touch test.txt
$ chmod 777 test.txt
$ ls -l test.txt
-rwxrwxrwx 1 user1 user1 0 7月 29 08:49 test.txt
memo
※ test.txtのパーミッションは「777」なので、誰でも削除ができるはず。
user2でファイルの削除を試みる
# su user2
$ cd dir ← スティッキービット(Sticky Bit)が設定されているディレクトリへ移動
$ ls -l test.txt
-rwxrwxrwx 1 user1 user1 10 7月 29 08:50 test.txt
$ rm test.txt
rm: cannot remove `test.txt': 許可されていない操作です
memo
※ スティッキービットが設定されているため、権限があるのに削除できない。
スティッキービットを解除する
# chmod o-t dir # ls -ld dir drwxrwxrwx 2 root root 4096 7月 29 08:49 dir ← スティッキービット(Sticky Bit)が解除されている
もう一度user2でファイルの削除を試みる
# su user2 $ cd dir $ ls -l test.txt -rwxrwxrwx 1 user1 user1 10 7月 29 08:50 test.txt $ rm test.txt ← エラー無し $ ls -l 合計 0 ← ファイルがuser2ユーザーにより削除されている。
このように、スティッキービット(Sticky Bit)が設定されていない場合は、権限があれば通常通りファイルを削除できます。