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

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

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

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

Linux

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

Q&A

解決済

3回答

2669閲覧

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

strike1217

総合スコア651

bash

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

Linux

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

0グッド

0クリップ

投稿2017/04/19 11:38

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

-rw-r--r-- 1 root root 3103 4月 15 18:03 /etc/passwd

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

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

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

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

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

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

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

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

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

guest

回答3

0

ベストアンサー

chmod a=rwx [passwdファイルをいじくるプログラム]

同じプログラムを指定すれば、これでやってもできますよね??

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

chmod a=rwx /etc/passwd

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

投稿2017/04/19 16:55

otn

総合スコア84533

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

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

strike1217

2017/04/20 04:32

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

2017/04/20 04:33

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

2017/04/20 04: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 に変えることができます。
maisumakun

2017/04/20 05:05

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

2017/04/20 05:19

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

2017/04/20 05:22

そのとおりです。
strike1217

2017/04/20 05:23

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

2017/04/20 05:30

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

0

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

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

投稿2017/04/19 13:51

maisumakun

総合スコア145183

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

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

strike1217

2017/04/20 04:52 編集

現在これです。 -rwsr-xr-x 1 root root /usr/bin/passwd これでも、全ユーザーで書き換え可能な状態ではないのでしょうか??
maisumakun

2017/04/20 05:03

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

0

  • 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 11:53

編集2017/04/20 00:31
KSwordOfHaste

総合スコア18394

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

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

strike1217

2017/04/19 12:07

セキュリティ向上ですね
KSwordOfHaste

2017/04/19 12:36

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

2017/04/19 15:24

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問