kazmax - Linux で自宅サーバー

スティッキービット(Sticky Bit) - 特殊なアクセス権

スティッキービット(Sticky Bit)という特殊なアクセス権があります。このページでは、スティッキービット(Sticky Bit)について説明します。

Last Update : 2013年07月29日

スティッキービット(Sticky Bit) - 特殊なアクセス権 項目

  1. スティッキービット(Sticky Bit)とは
  2. スティッキービット(Sticky Bit)の確認
  3. スティッキービット(Sticky Bit)を設定する
  4. 使用例

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)が設定されていない場合は、権限があれば通常通りファイルを削除できます。

Linux 基礎知識 関連記事