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

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

ただいまの
回答率

87.92%

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

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 165

score 1

現在、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に表示されるユーザー名にもそれらしいものが
    並んでいます。これらのアカウントは「その他のユーザー」に含まれるのでしょうか。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

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 22:28

    丁寧に回答頂き、ありがとうございます。

    >それは、sudoコマンドやsudoeditコマンドの機能(メリット、存在価値)ですね。
    >SUIDはそれらコマンドを実現可能にするOS機能です。
    その通りでした。勘違いしていました。
    自分が1.で確認したかったことを一言でいうと、SUID(SGID)はセキュリティ上のリスクになるのか、ということです。
    私はセキュリティの観点から、大きな権限は必要な時以外できるだけ使いたくないし、与えたくないと考えています。……(a)
    SUIDが、実行者が誰であってもSUIDのユーザの権限で実行したことにするものであることは理解した上で前述の1.をより正確に述べるなら、「rootログインはすべて禁止(SSH,コンソールなど)。sudoは利用可能。一般アカウントは一つ。このような状況において、rootのユーザ権限で実行したことにするSUID(SGID)を残す意義はなんでしょうか」
    また、SUID(SGID)がセキュリティ上のリスクになる場合、どんな方法で管理するのが普通なのでしょうか。

    また、2.について、(a)の理由からその他のユーザーにも出来るだけ権限を与えないほうがよいのではないかと考えています。互いに関係しあっているファイルは、おそらく同じグループに入っているだろうから、その他のユーザーの権限をすべて(rwx)なくしても問題なく動く気がしますが、一般的にはどのようなパーミッションの数値を設定するのがよいのでしょうか。

    お時間があるときに答えていただけたら幸いです。

    キャンセル

  • 2021/06/10 23:20

    SUIDがリスクになるのは、そのプログラム( /usr/bin/passwd など)に脆弱性がある場合ですね。

    > sudoは利用可能。

    sudo を任意のコマンドに対して許可するなら、すべてのコマンドの脆弱性がリスクになります。つまり、SUIDのリスクより非常に広範囲です。

    なので、あなたの懸念はおそらく的外れです。

    2.
    そのあたりを十分考えてデフォルトのパーミッションが設定されていますので、変更しないのがベストです。

    キャンセル

  • 2021/06/11 07:13

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

    キャンセル

  • 2021/06/11 11:31 編集

    > このような状況において、rootのユーザ権限で実行したことにするSUID(SGID)を残す意義はなんでしょうか

    sudoを行えるようにするために、sudoコマンドへのsetuidが必要です。

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/06/10 22:28

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

    キャンセル

0

すべてのファイルのSUID(SGID)を削除することの弊害(コマンドが使えない、
ファイルが開けないなど)は何かありますか。(root権限が必要な作業はsudoを使用します)

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2021/06/10 19:28

    sudoやsuなど、権限の切り替えを行うコマンドは「一般ユーザーが実行してrootの権限を使う」という性質上、setuidでないと実現不能なコマンドです。

    setuidなしでは、root権限を使う方法は「いったんログアウトしてrootとしてログインする」しかなくなります。

    キャンセル

  • 2021/06/10 22:28

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

    キャンセル

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/11 07:13

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

    キャンセル

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

  • ただいまの回答率 87.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る