- ベストアンサー
Linux(redhat系)の実行ユーザについて
- /etc/rc.d/init.d/に作成した起動スクリプトで自動起動するサービスの実行ユーザは誰になるか?
- システムに組み込まれている自動起動サービス(httpdなど)の実行ユーザは誰になるか?
- cronから起動されるプログラムの実行ユーザは、crontabに設定されている実行ユーザ
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> (1)/etc/rc.d/init.d/に起動スクリプトを作成し、chkconfigでサーバ起動時に自動起動されるように設定したサービスの実行ユーザは誰になるのでしょうか? init.d以下のスクリプトはroot権限で動き出しますが、root権限で動いているプロセスは必要があれば他のユーザ権限に移行する事が可能です。 なので、動き始めるときはrootとして開始しますが、途中で他のユーザに変身して実行される場合もあります。よって『サービスの実行ユーザは誰になる』という事であれば誰にでもなれます。 > (2)あらかじめシステムに組み込まれているサービスで、サーバ起動時に自動起動されるサービス(httpdとか)の実行ユーザは誰になるのでしょうか? 特権ポートで接続を待つhttpdは特権ユーザ権限で動かす必要があります。なのでhttpdは制御プロセスをrootで動かして、rootで動いてる制御プロセスがhttpd.confに書かれているユーザ権限でスレーブサーバを動かしているかと思います。 ※ プロセスツリーを確認すればrootで動いている親のhttpdとwwwなどhttpd.confで指定されたユーザで動いている子(スレーブ)プロセスが確認できるかと思います。 ※ 一般ユーザ権限で動かす場合には8080など非特権ポートを使って動かしているはず。この場合はユーザが同じですが上記同様制御プロセスがスレーブプロセスを動かしていると思いますので親子関係で一セットのhttpdプロセス群として動いているはずです。 > (3)cronから起動されるプログラムの実行ユーザは、crontabに設定されている実行ユーザ 非特権ユーザ(uid0以外)の場合は正しいです。 特権ユーザの場合は、プロセスが他のユーザに変身する事があります(できます)ので何とも言えません。 > (4)OSにログイン後、ターミナルを立ち上げて、そのターミナルから起動したプログラムの実行ユーザは、OSにログインしたユーザ 非特権ユーザ(uid0以外)の場合は正しいです。 特権ユーザの場合は、プロセスが他のユーザに変身する事があります(できます)ので何とも言えません。
その他の回答 (3)
- wingstar
- ベストアンサー率37% (102/275)
>他のプロセスでこのように他のユーザに変身するケースというのは、どのようなケースがありますでしょうか? それは、個々のサービスの設計思想次第じゃないでしょうか。 特に決まりがあるわけじゃないと思います。 ただ、セキュリティーに絡んだサービスほど、変身させる場合が多いのではと思いますが。 別にrootで動くhttpdを開発したっていいわけですから。
お礼
ご回答どうもありがとうございます。 セキュリティ次第だということが理解できました。 個々のサービスについてもう一度見直してみたいと思います。 ありがとうございました。
- Wr5
- ベストアンサー率53% (2173/4061)
>(3)cronから起動されるプログラムの実行ユーザは、crontabに設定されている実行ユーザ /etc/crontabとcrontab -eで編集したものとでは扱いが異なる点にはご注意を。
お礼
ご回答どうもありがとうございます。 編集の方法によっても異なるところまでは注意できていませんでした。 crontabについてもう少し調べてみます。 ありがとうございました。
- wingstar
- ベストアンサー率37% (102/275)
(1)(2)は同じですよね。 起動スクリプト自体は、root。 その後、サービスのプロセスなどを起動する際に、設定ファイルの中にユーザーやグループが設定できるものがありますが、それはその設定されているもので起動。 物によって違うので、個々に調べてみて下さい。 (3)(4)はそのとおりで良いと思います。 (3)は異論もあろうかと思いますが、基本はcrontab -eで設定するのが一般的。
お礼
ご回答どうもありがとうございます。 基本的なユーザ権限については理解できました。 個々の設定についてはもう少し調べてみます。 ありがとうございました。
お礼
ご回答どうもありがとうございます。 >特権ポートで接続を待つhttpdは特権ユーザ権限で動かす必要があります。なのでhttpdは制御プロセスをrootで動かして、 >rootで動いてる制御プロセスがhttpd.confに書かれているユーザ権限でスレーブサーバを動かしているかと思います。 httpd.confでいえば、「User」「Group」が実際プロセスを動かしているユーザ権限であることが理解できました。 >動き始めるときはrootとして開始しますが、途中で他のユーザに変身して実行される場合もあります。 >特権ユーザの場合は、プロセスが他のユーザに変身する事があります(できます)ので何とも言えません。 他のプロセスでこのように他のユーザに変身するケースというのは、どのようなケースがありますでしょうか? また、分かり易い関連サイトなどありましたら、ご紹介していただけると助かります。