【Linux】スティッキービットとは?SUIDやSGIDの設定方法と違い
この記事からわかること
- Linux:パーミション(アクセス権)とは?
- スティッキービットとは?
- SUID/SGIDの違いと意味
- chmodコマンドでの設定方法
- パーミション「t」「s」とは?
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
パーミションとは?
パーミションとはLinuxなどのファイルシステムに使われているアクセス権のことです。通常使用されるパーミションは読み取り権、書き込み権、実行権の3つですが、それ以外にもSUID/SGID、スティッキービットと呼ばれる特殊なパーミションも存在します。
パーミションの種類
- 読み取り権:r(Read):4
- 書き込み権:w(Write):2
- 実行権:x(eXecute):1
- SUID:s(set user id):4000
- SGID:s(set group id):2000
- スティッキービット:t:1000
通常のパーミションはrwx
のような記号もしくは421
のような数値で表され、chmod
コマンドでパーミションを設定する際やls -l
コマンドでファイルのパーミションを確認する際に使用されています。スティッキービットらも同様に記号と数値で表すことができます。
ファイルのパーミションを設定する
$ chmod 755 sample.txt
ファイルのパーミションを確認する
$ ls -l
drwx------@ 3 user staff 96 11 14 16:45 Applications
drwx------@ 14 user staff 448 5 11 06:47 Desktop
drwx------+ 3 user staff 96 11 14 15:26 Documents
-rw-r--r-- 1 user staff 56 11 28 18:07 composer.json
-rw-r--r-- 1 user staff 90600 11 28 18:07 composer.lock
drwxr-xr-x 13 user staff 416 11 28 18:07 vendor
スティッキービットとは?
スティッキービットは特殊なパーミションで一部のディレクトリ(/tmpや/var/tmpなど)にデフォルトで設定されており、t
またはT
で表されます。設定されているのは3番目の「その他のユーザー」に対してのアクセス権部分です。
スティッキービットが設定されているファイル(ディレクトリ)は書き込みすることはできても削除することが不可能になります。
$ ls -ld /tmp
drwxrwxrwt 3 root root 85 May 1 09:05
d rwx rwx rwt
ファイル種別 所有者 グループ その他のユーザー
/tmp
はテンポラリファイル(temporary files:一時的に作成されるファイル)が配置されるディレクトリです。/var
などの詳細やディレクトリ構造については以下の記事を参考にしてください。
スティッキービットの設定方法
スティッキービットを設定するにはchmod
コマンドでt
もしくは1000
を指定します。
記号で指定する場合
$ chmod o+t sample.txt
$ ls -l sample.txt
-rwxr-xr-t@ 1 user staff 24 5 4 10:17 sample.txt
数値で指定する場合
$ chmod 1755 sample.txt
$ ls -l sample.txt
-rwxr-xr-t@ 1 user staff 24 5 4 10:17 sample.txt
またスティッキービットは「その他のユーザー(o)」に指定するものなので所有者(u)やグループ(g)に指定しても何も起こりません。
SUID/SGIDとは?
SUID/SGIDとは「Set User Id/Set Group Id」の略称の特殊なパーミションで、一部のディレクトリ(/bin/passwdなど)にデフォルトで設定されており、s
で表されます。SUIDの場合は1番目の「所有者」にSGIDの場合は2番目の「グループ」に設定されています。
SUID/SGIDが設定されているファイル(ディレクトリ)は実行権さえ持っていればどのユーザーが実行しても所有者の権限で実行されたことになります。
$ ls -ld /bin/passwd
-rws--x--x 3 root root 85 May 1 09:05
/bin/passwd
は一般ユーザーが自身のパスワードを変更できるpasswd
コマンドが格納されている場所です。
$ passwd
Changing password for User.
Old Password:
SUID/SGIDの設定方法
SUID/SGIDを設定するにはchmod
コマンドでs
もしくは4000
(SGIDの場合は2000
)を指定します。
記号で指定する場合
$ chmod g+s sample.txt
$ ls -l sample.txt
-rwxr-sr-x@ 1 s staff 24 5 4 10:17 sample.txt
数値で指定する場合
$ chmod 4755 sample.txt
$ ls -l sample.txt
-rwsr-xr-x@ 1 user staff 24 5 4 10:17 sample.txt
まとめ
- スティッキービットとは書き込み可能/削除不可能のパーミション
- SUID/SGIDは所有者の権限でファイルを実行できるパーミション
- それぞれの設定方法はchmodコマンドで適当な記号か数値を指定する
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。