質問: 現在、Linuxをデスクトップ用で使おうと考え情報を集めているのですが、 下記の2点が分かりません。 1.一般アカウントを一つしか作らない場合、SUID(SGID)を設定する意味 2.linux パーミッションにおけるその他のユーザーとは誰を指しているのか 1. SUIDのメリットはrootのパスワードを他のユーザに教えることなくroot権限が必要な 編集作業を可能にすることだと思うのですが、これは複数のユーザーが一つのPCに ログインするときならともかく、一般アカウントを一つだけ作って他のアカウントを 作らない場合、どういった意味があるのでしょうか。 あまり意味がない場合、不要な権限昇格を防止するためにSUID(SGID)を削除しようと 思っています。 すべてのファイルのSUID(SGID)を削除することの弊害(コマンドが使えない、 ファイルが開けないなど)は何かありますか。(root権限が必要な作業はsudoを使用します) 2. パーミッションには所有者、所有者のグループ、その他のユーザーが存在していますが、 その他のユーザーとは誰のことを指すのでしょうか。 A,B,Cの3つのアカウントがあって、ファイルaの所有者と所有グループがAのとき、 その他のユーザーが指すのはB,Cだということは判ります。 しかし、アカウントには一般ユーザー、rootユーザーの他に特定のアプリケーション用の アカウントがあります。/etc/passwdに表示されるユーザー名にもそれらしいものが 並んでいます。これらのアカウントは「その他のユーザー」に含まれるのでしょうか。
回答: suid・sgid を落とすと、例えば下記のようになります。 suid・sgid は他アカウントの権限を取得する仕組みですので、リスクがあるのは事実です。 参考: 具体的な事例: しかしながら、Linux は suid・sgid を利用者が落とすということを前提に設計されていないので、セキュリティリスクを回避したつもりが、意図どおりに動かないという別の問題を引き起こします。よって、Linux においてはそのアプローチは推奨されません。 なお、動かなくなるであろうコマンドは下記でチェックできます。 ``` $ find / -type f -a \( -perm /4000 -o -perm /2000 \) -ls 2>/dev/null ``` suid・sgid のリスクを真面目に考えるならば、Linux を使わない、インターネットに接続しない、Chromebook を使うといった別のアプローチが適切と思います。 なお、Windows に suid があるかというとそういうものはなくて、特権が必要であればサービスとして登録することになります (多分)。しかしながらそのサービスに脆弱性があったらどうするの、信用できないサービスを落としますか? という話になるので、結局は利用者が何を信用するかという問題に帰結すると思います。