読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】passwd の「rws」の s って何?SUID・SGID・スティッキービット【LPICレベル1】

27レスカテゴリ:Linux
1: 名無しさん

ls -l /usr/bin/passwd を見たら -rwsr-xr-x って出た
x のところが s になってる。これ何なん

2: 名無しさん

>>1
SUID(セットユーザーID)。このファイルを実行すると、実行した人ではなくファイルの所有者の権限でプロセスが動く
passwd の所有者は root やから、誰が実行しても root の権限で動く

3: 名無しさん

>>2
なんでわざわざそんなことするん

4: 名無しさん

>>3
パスワードは /etc/shadow に保存されてて、このファイルは root しか書き換えられない
一般ユーザーが自分のパスワードを変えるには、passwd が root として動いて書き込む必要がある

5: 名無しさん

>>4
それ危なくない?root で動くプログラムを誰でも起動できるってことやろ

6: 名無しさん

>>5
危ない。プログラムにバグがあると、そこから root の権限を乗っ取られることがある
だから SUID はどうしても必要なプログラムにだけつける。ついているファイルは find /usr/bin -perm -4000 で一覧にできて、passwd や sudo、chsh などが出てくる

7: 名無しさん

数字で指定するときはどう書くん

8: 名無しさん

>>7
いつもの3桁の前にもう1桁つける。SUID が 、SGID が 、スティッキービットが

chmod 4755 file で -rwsr-xr-x になる。8進数の桁ごとの足し算やから、繰り上がりは起きない

9: 名無しさん

>>8
SGID とスティッキービットの例も

10: 名無しさん

>>9
SGID は chmod 2755 で rwxr-sr-x(グループの x が s になる)
スティッキービットは chmod 1777 で rwxrwxrwt(その他の x が t になる)。/tmp がまさにこの

11: 名無しさん

大文字の S を見たことあるんやけど、小文字と何が違うん

12: 名無しさん

>>11
x がないのに SUID だけ立ってると大文字になる。chmod 4644 file は -rwSr--r--
実行できないファイルに SUID をつけても意味がないから、大文字の S は設定ミスを疑う合図
スティッキービットも、その他の x がないと大文字の T になる

13: 名無しさん

SGID は、ファイルとディレクトリで意味が違うって聞いた

14: 名無しさん

>>13
ファイルにつけると、実行したときにファイルのグループの権限で動く(SUID のグループ版)
ディレクトリにつけると、中に新しく作ったファイルのグループが、作った人のグループではなくディレクトリのグループになる。中に作ったサブディレクトリにも SGID が引き継がれる

15: 名無しさん

>>14
それ何に使うん

16: 名無しさん

>>15
チームの共有ディレクトリ。グループを dev にして chmod g+s しておけば、誰が作ったファイルも dev グループになるから、メンバー全員がグループの権限で読み書きできる

17: 名無しさん

>>16
g+s をつける前から入ってたファイルも dev に変わるんか

18: 名無しさん

>>17
変わらない。引き継ぐのは、つけたあとに作るファイルだけ
前からあるファイルは chgrp で自分で直す

19: 名無しさん

スティッキービットは何をするん

20: 名無しさん

>>19
ディレクトリにつけると、中のファイルを削除したり名前を変えたりできるのが、そのファイルの所有者、ディレクトリの所有者、root だけになる
/tmp は全員が書き込めるけど、他人のファイルは消せない

21: 名無しさん

>>20
ディレクトリに w があれば中のファイルは消せる、って習ったんやけど
なら全員に w があるやん

22: 名無しさん

>>21
普通はそう。スティッキービットはその例外を作るためのビット
の w で新しいファイルは誰でも作れるけど、消したり名前を変えたりできるのは自分のファイルだけになる

23: 名無しさん

シェルスクリプトに SUID をつけたら、root として動かせるんちゃうの

24: 名無しさん

>>23
Linux では、#! で始まるスクリプトの SUID と SGID は無視される
スクリプトを root で動かしたいなら、sudo で許可するのが普通

25: 名無しさん

記号で指定する書き方もある?

26: 名無しさん

>>25
ある。SUID は chmod u+s、SGID は chmod g+s、スティッキービットは chmod +t
外すときは u-s、g-s、-t

27: 名無しさん

SUID は所有者の権限で実行、SGID はグループの権限で実行かグループの引き継ぎ、スティッキービットは自分のファイルしか消せなくする
数字は ・・ を先頭の桁に足す。これで全部やな

管理人のひとこと