【Linux】スティッキービットとは?SUIDやSGIDの設定方法と違い

この記事からわかること

  • Linuxパーミション(アクセス権)とは?
  • スティッキービットとは?
  • SUID/SGID違い意味
  • chmodコマンドでの設定方法
  • パーミション「t」「s」とは?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

パーミションとは?

パーミションとはLinuxなどのファイルシステムに使われているアクセス権のことです。通常使用されるパーミションは読み取り権、書き込み権、実行権の3つですが、それ以外にもSUID/SGID、スティッキービットと呼ばれる特殊なパーミションも存在します。

パーミションの種類

通常のパーミションは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

まとめ

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index