ディレクトリのスティッキービット


アニメ『龍の歯医者』

このアニメのように、歯を削らすに虫歯治療できたらいいなあと思います。口の中に小人を飼って、歯磨きも自動でやってくれるとすごく楽ですねえ。

今回は、ディレクトリの権限のスティッキービットを見ていきます。

root@deb8:~# mkdir sample
root@deb8:~# chmod 777 sample
root@deb8:~# cd sample
root@deb8:~/sample# 

実験用ユーザを追加します。名前はperson1とperson2としました。

root@deb8:~/sample# useradd person1
root@deb8:~/sample# useradd person2

person1用にはdir1を、person2用にはdir2ディレクトリを用意します。

root@deb8:~/sample# sudo -u person1 mkdir dir1
root@deb8:~/sample# sudo -u person2 mkdir dir2
root@deb8:~/sample# ls -l
合計 8
drwxr-xr-x 2 person1 person1 4096  5月 23 21:05 dir1
drwxr-xr-x 2 person2 person2 4096  5月 23 21:05 dir2
root@deb8:~/sample# 

互いに相手用のディレクトリへは書き込みできませんね。

root@deb8:~/sample# sudo -u person1 touch dir2/hello
touch: `dir2/hello' に touch できません: 許可がありません
root@deb8:~/sample# sudo -u person2 touch dir1/hello
touch: `dir1/hello' に touch できません: 許可がありません
root@deb8:~/sample# 

自分用のディレクトリへは書き込みができます。

root@deb8:~/sample# sudo -u person1 touch dir1/hello
root@deb8:~/sample# sudo -u person2 touch dir2/hello
root@deb8:~/sample# find
.
./dir2
./dir2/hello
./dir1
./dir1/hello
root@deb8:~/sample# 

ユーザperson2が所属するグループをperson1に変更してみます。

root@deb8:~/sample# usermod -G person1 person2

次にperson1のディレクトリdir1をグループを書き込み可能にします。
これでperson1グループであるperson2も書き込み可能となりました。

drwxr-xr-x 2 person1 person1 4096  5月 23 21:10 dir1
drwxr-xr-x 2 person2 person2 4096  5月 23 21:11 dir2
root@deb8:~/sample# chmod 775 dir1
root@deb8:~/sample# ls -l
合計 8
drwxrwxr-x 2 person1 person1 4096  5月 23 21:10 dir1
drwxr-xr-x 2 person2 person2 4096  5月 23 21:11 dir2
root@deb8:~/sample# 

では、person2ユーザでdir1内に書き込んでみましょう。

root@deb8:~/sample# sudo -u person2 touch dir1/goodnight
root@deb8:~/sample# find
.
./dir2
./dir2/hello
./dir1
./dir1/hello
./dir1/goodnight
root@deb8:~/sample# 

dir1のスティッキービットをONします。

root@deb8:~/sample# sudo -u person1 chmod 1775 dir1
root@deb8:~/sample# ls -l
合計 8
drwxrwxr-t 2 person1 person1 4096  5月 23 21:17 dir1
drwxr-xr-x 2 person2 person2 4096  5月 23 21:11 dir2
root@deb8:~/sample# 

xがtになりましたが、これがスティッキーONの表示です。
1000を加えてchmodすればスティッキーがONできます。`

現在のdir1のファイルを確認してみましょう。

root@deb8:~/sample# ls -l dir1
合計 0
-rw-r--r-- 1 person2 person2 0  5月 23 21:17 goodnight
-rw-r--r-- 1 person1 person1 0  5月 23 21:10 hello
root@deb8:~/sample# 
root@deb8:~/sample# id person2
uid=1003(person2) gid=1003(person2) groups=1003(person2),1002(person1)
root@deb8:~/sample# 

person2はプライマリグループがperson2と表示されていますが、所属グループはperson1です。

スティッキーフラグがONされているdir1のファイルを削除したいと思います。

root@deb8:~/sample# sudo -u person1 rm dir1/*
rm: 書き込み保護されたファイル 通常の空ファイル `dir1/goodnight' を削除しますか?y
root@deb8:~/sample# find
.
./dir2
./dir2/hello
./dir1
root@deb8:~/sample# 

書き込み保護されたファイルを消すかどうかのメッセージが出ましたね。

もう一度ファイル名を変えて確認してみます。

root@deb8:~/sample# sudo -u person1 touch dir1/AAAA
root@deb8:~/sample# sudo -u person2 touch dir1/BBBB
root@deb8:~/sample# sudo -u person1 rm dir1/AAAA
root@deb8:~/sample# sudo -u person1 rm dir1/BBBB
rm: 書き込み保護されたファイル 通常の空ファイル `dir1/BBBB' を削除しますか?y
root@deb8:~/sample# 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA