質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

4回答

2142閲覧

SUID(SGID)の意義,その他のユーザーとは誰のことか

sugiback

総合スコア1

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2021/06/10 10:02

現在、Linuxをデスクトップ用で使おうと考え情報を集めているのですが、
下記の2点が分かりません。

1.一般アカウントを一つしか作らない場合、SUID(SGID)を設定する意味
2.linux パーミッションにおけるその他のユーザーとは誰を指しているのか

SUIDのメリットはrootのパスワードを他のユーザに教えることなくroot権限が必要な
編集作業を可能にすることだと思うのですが、これは複数のユーザーが一つのPCに
ログインするときならともかく、一般アカウントを一つだけ作って他のアカウントを
作らない場合、どういった意味があるのでしょうか。
あまり意味がない場合、不要な権限昇格を防止するためにSUID(SGID)を削除しようと
思っています。
すべてのファイルのSUID(SGID)を削除することの弊害(コマンドが使えない、
ファイルが開けないなど)は何かありますか。(root権限が必要な作業はsudoを使用します)

パーミッションには所有者、所有者のグループ、その他のユーザーが存在していますが、
その他のユーザーとは誰のことを指すのでしょうか。
A,B,Cの3つのアカウントがあって、ファイルaの所有者と所有グループがAのとき、
その他のユーザーが指すのはB,Cだということは判ります。
しかし、アカウントには一般ユーザー、rootユーザーの他に特定のアプリケーション用の
アカウントがあります。/etc/passwdに表示されるユーザー名にもそれらしいものが
並んでいます。これらのアカウントは「その他のユーザー」に含まれるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

suid・sgid を落とすと、例えば下記のようになります。
https://teratail.com/questions/331043

suid・sgid は他アカウントの権限を取得する仕組みですので、リスクがあるのは事実です。
参考: https://www.ipa.go.jp/security/awareness/vendor/programmingv1/b07_03.html
具体的な事例: https://news.mynavi.jp/article/20140114-a056/

しかしながら、Linux は suid・sgid を利用者が落とすということを前提に設計されていないので、セキュリティリスクを回避したつもりが、意図どおりに動かないという別の問題を引き起こします。よって、Linux においてはそのアプローチは推奨されません。

なお、動かなくなるであろうコマンドは下記でチェックできます。

$ find / -type f -a ( -perm /4000 -o -perm /2000 ) -ls 2>/dev/null

suid・sgid のリスクを真面目に考えるならば、Linux を使わない、インターネットに接続しない、Chromebook を使うといった別のアプローチが適切と思います。

なお、Windows に suid があるかというとそういうものはなくて、特権が必要であればサービスとして登録することになります (多分)。しかしながらそのサービスに脆弱性があったらどうするの、信用できないサービスを落としますか? という話になるので、結局は利用者が何を信用するかという問題に帰結すると思います。

投稿2021/06/10 17:25

編集2021/06/10 17:25
68user

総合スコア2022

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugiback

2021/06/10 22:13

ご回答ありがとうございました。参考にさせていただきます。
guest

0

ベストアンサー

(1)

SUIDのメリットはrootのパスワードを他のユーザに教えることなくroot権限が必要な編集作業を可能にすることだと思うのですが、

それは、sudoコマンドやsudoeditコマンドの機能(メリット、存在価値)ですね。

SUIDはそれらコマンドを実現可能にするOS機能です。

全ファイルのSUIDビットを落とすと、susudoも使えなくなるので、root権限が必要な場合は、一般ユーザーを一度ログアウトして、コンソールからrootでログイン直して作業することになりますが、そういうことをしたいということでしょうか?
ネットワーク経由ではrootでログインできないようにするのが普通なので、ネットワークを介さないコンソールからのログインが必要です。

また、一般ユーザーがpasswdcrontablocateなどのコマンドを使えなくなるので、使う場合はrootでログインすることになります。

daemonプログラムの中にも動作しなくなるものがあるかも知れません。

上記の運用が許容できるなら、有りだと思いますが、普通はそういうニーズは無いでしょうね。

rootでログインすることは極力避け、必要なコマンドのみ単独でroot権限で実行するというのが普通の考え方です。

(2)

これらのアカウントは「その他のユーザー」に含まれるのでしょうか。

その通りです。

アカウントには一般ユーザー、rootユーザーの他に特定のアプリケーション用のアカウントがあります

これは間違っています。一般ユーザーとはroot以外(UID=0以外)の全てのユーザーのことです。
「特定のアプリケーション用のアカウント」は一般ユーザーの一種です。

投稿2021/06/10 11:33

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugiback

2021/06/10 13:28

丁寧に回答頂き、ありがとうございます。 >それは、sudoコマンドやsudoeditコマンドの機能(メリット、存在価値)ですね。 >SUIDはそれらコマンドを実現可能にするOS機能です。 その通りでした。勘違いしていました。 自分が1.で確認したかったことを一言でいうと、SUID(SGID)はセキュリティ上のリスクになるのか、ということです。 私はセキュリティの観点から、大きな権限は必要な時以外できるだけ使いたくないし、与えたくないと考えています。……(a) SUIDが、実行者が誰であってもSUIDのユーザの権限で実行したことにするものであることは理解した上で前述の1.をより正確に述べるなら、「rootログインはすべて禁止(SSH,コンソールなど)。sudoは利用可能。一般アカウントは一つ。このような状況において、rootのユーザ権限で実行したことにするSUID(SGID)を残す意義はなんでしょうか」 また、SUID(SGID)がセキュリティ上のリスクになる場合、どんな方法で管理するのが普通なのでしょうか。 また、2.について、(a)の理由からその他のユーザーにも出来るだけ権限を与えないほうがよいのではないかと考えています。互いに関係しあっているファイルは、おそらく同じグループに入っているだろうから、その他のユーザーの権限をすべて(rwx)なくしても問題なく動く気がしますが、一般的にはどのようなパーミッションの数値を設定するのがよいのでしょうか。 お時間があるときに答えていただけたら幸いです。
otn

2021/06/10 14:20

SUIDがリスクになるのは、そのプログラム( /usr/bin/passwd など)に脆弱性がある場合ですね。 > sudoは利用可能。 sudo を任意のコマンドに対して許可するなら、すべてのコマンドの脆弱性がリスクになります。つまり、SUIDのリスクより非常に広範囲です。 なので、あなたの懸念はおそらく的外れです。 2. そのあたりを十分考えてデフォルトのパーミッションが設定されていますので、変更しないのがベストです。
sugiback

2021/06/10 22:13

デフォルトのパーミッションも考えられて設定されているのですね。 丁寧にお答えいただいたおかげで、疑問が解消しました。 本当にありがとうございました。
maisumakun

2021/06/11 02:32 編集

> このような状況において、rootのユーザ権限で実行したことにするSUID(SGID)を残す意義はなんでしょうか sudoを行えるようにするために、sudoコマンドへのsetuidが必要です。
guest

0

すべてのファイルのSUID(SGID)を削除することの弊害(コマンドが使えない、

ファイルが開けないなど)は何かありますか。(root権限が必要な作業はsudoを使用します)

sudo自体setuidされたコマンドです。

---s--x--x 1 root root 147240 Feb 8 21:06 /usr/bin/sudo

投稿2021/06/10 10:25

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/06/10 10:28

sudoやsuなど、権限の切り替えを行うコマンドは「一般ユーザーが実行してrootの権限を使う」という性質上、setuidでないと実現不能なコマンドです。 setuidなしでは、root権限を使う方法は「いったんログアウトしてrootとしてログインする」しかなくなります。
sugiback

2021/06/10 13:28

ご回答ありがとうございました。参考にさせていただきます。
guest

0

SUID を勘違いしているように思えます。
SUIDは、「そのfileの実行を誰が行っても、SUIDのユーザの権限で実行したことにする」というものです。OS起動時にrootが色々起動しますが、そのときにroot権限ではなく apatch 権限で起動 などに使うこともあるので、なくすとむしろセキュリティを悪くするかも、です。

その他のユーザーとは a,b,c以外に /etc/password に載っている全てです。
中には login 出来ない設定のユーザーも居るかと思いますが、例えばapach ユーザで起動のdaemonが乗っ取られた、というとき「その他のユーザ」からのアクセスを禁じて入れば、そこは安全です。

投稿2021/06/10 10:19

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugiback

2021/06/10 13:28

ご回答ありがとうございました。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問