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

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

ただいまの
回答率

90.32%

  • Linux

    4047questions

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

  • bash

    698questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

LinunxのSUIDって必要でしょうか??

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 429

strike1217

score 563

/etc/passwdファイルなどは、一般ユーザーからは書き換えられないようになっていると思います。

-rw-r--r-- 1 root root 3103  415 18:03 /etc/passwd

chmod u+s [passwdファイルをいじくるプログラム]にすれば、他のユーザーからこのプログラムを介して、passwdファイルを書き換えられますが、

 SUIDというものは必要なのでしょうか??

chmod a=rwx [passwdファイルをいじくるプログラム]
同じプログラムを指定すれば、これでやってもできますよね??

なぜ、わざわざSUIDなどと言うものを作ったのでしょうか??

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

checkベストアンサー

+2

chmod a=rwx [passwdファイルをいじくるプログラム]
同じプログラムを指定すれば、これでやってもできますよね?? 

できませんよ。やってみましたか?
あるいは、

chmod a=rwx /etc/passwd

の書き間違いだったのでしょうか?
そう設定すれば、誰でも自由にvi等で/etc/passwdを自由に書き換えられるというユーザー管理されていないOSになりますね。パスワードは別ファイルに保存されているので、そのファイルと整合性がとれなくなったときにどうなるのかはちょっと分かりませんが。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/04/20 13:32

    え?
    できないんですか?

    rootユーザーでプログラムを作って、そいつにchomd u+s と chmod a=rwx を与えたときで、どう違うかということなのですが・・・

    キャンセル

  • 2017/04/20 13:33

    もしくは、chomod 777 でも良いのですが・・・

    キャンセル

  • 2017/04/20 13:42

    -rw-r--r-- 1 root root 3103 4月 15 18:03 /etc/passwd
    このパーミッションだとrootユーザーしか書き換えられないはずです。

    -rwxrwxrwx root のパーミッションを持ったプログラムを介せば、rootユーザーでなくても/etc/passwdを編集できるはずですが・・・

    /usr/bin/passwd は、-rwsr-xr-x 1 root こうなっていました。
    -rwxrwxrwx root に変えることができます。

    キャンセル

  • 2017/04/20 14:05

    setuidされたプログラムは、誰が実行してもファイル自身のuid(setuidする場面ではふつうroot)で動きます。これに対して、setuidのないプログラムでは、実行したユーザーの権限で動きます(rootにしか書き換えられないファイルを書き換えることはできません)。

    キャンセル

  • 2017/04/20 14:19

    では、/usr/bin/passwd をroot から-rwxrwxrwx に変更したとしても、一般ユーザーからpasswdコマンドを実行しても /etc/passwd の中身を書き換えることはできない
    ということですね?

    キャンセル

  • 2017/04/20 14:22

    そのとおりです。

    キャンセル

  • 2017/04/20 14:23

    なるほど!
    実行の際のUIDのところに違いがあるのですね!
    ちょっとやってみます。

    キャンセル

  • 2017/04/20 14:30

    ほんとだ!
    実際にpasswdのパーミッションを変えて、変更してみたら、「パスワードが変更されていません」とでてきました。
    ありがとうございます。
    解決しました

    キャンセル

+1

  • rootの権限をもつSUID付きのプログラムはrootにしか作れない
  • 充分セキュリティーに配慮したSUID付きプログラムがあればroot以外にも使用を許せる

というふうにセキュリティーと使い勝手を両立することができるという意味合いだと思います。


補足:少し仕組み的なところを捕捉します(既にご存知ならスルーしてください。)

  • OS以外のプログラムは全てプロセスの中で動く

  • プロセスにはEUID(実効ユーザーID)とEGID(実効グループID)という属性がありこれらによりそのプロセス内で動いているプログラムの権限が決まる

  • bashなどからコマンドを打ち込むと(ビルトインコマンド以外は)新しいプロセスが作られてその中で実行される

  • 新プロセスが作られるとき親プロセスのEUID,EGIDが引き継がれる。

  • プログラムファイルのsetuid/setgid属性がついてない場合
    新プロセスでそのようなプログラムファイルを実行するとプロセスのEUID,EGIDは変化しません。(この仕組みによってあらゆるプログラムがloginユーザーの権限で動きます。)

  • プログラムファイルのsetuid/setgid属性がついている場合
    新プロセスでそのようなプログラムファイルを実行するとsetuidがついているならEUIDはプログラムファイルのオーナーのuidに置き換わります。setgid/EGIDも同様です。この仕組みにより(充分にセキュリティーに配慮した特別なプログラムに限って)非特権ユーザーが一時的に特権ユーザーの権限によりプログラムを動かすことができます。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/04/19 21:07

    セキュリティ向上ですね

    キャンセル

  • 2017/04/19 21:36

    一般ユーザがパスワードを変更するのに一々rootにやってもらわないといけない仕様にするとセキュリティー上はいいのですが不便すぎるということで「セキュリティー上の配慮も充分した上で、使い勝手もよくする」という両方の意味ですね。

    キャンセル

  • 2017/04/20 00:24

    chmod a=rwxでは、ダメで、
    chmod u+s こちらなら良いということですよね

    キャンセル

  • 2017/04/20 08:28

    そのとおりです

    キャンセル

+1

/etc/passwdを全ユーザー書き換え可能としてしまうと、他人のデータまで変更できてしまいます

ということで、setuidしたpasswdプログラムで、自分のものだけ設定できるように制御しています。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/04/20 13:47 編集

    現在これです。 -rwsr-xr-x 1 root root /usr/bin/passwd

    これでも、全ユーザーで書き換え可能な状態ではないのでしょうか??

    キャンセル

  • 2017/04/20 14:03

    suidした後は、passwdプログラムの中身の問題となります(バグや不正なプログラムなどがあった場合には、他のユーザー分まで書き換え可能となるかもしれませんが、それはそういうプログラムを置かせたrootの責任です)。

    キャンセル

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

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

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

  • Linux

    4047questions

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

  • bash

    698questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。