アプリ版:「スタンプのみでお礼する」機能のリリースについて

あるプログラムを実行したときの、実行ユーザについて教えてください。

基本的な質問で申し訳ございません。


(1)/etc/rc.d/init.d/に起動スクリプトを作成し、chkconfigでサーバ起動時に自動起動されるように設定したサービスの実行ユーザは誰になるのでしょうか?

(2)あらかじめシステムに組み込まれているサービスで、サーバ起動時に自動起動されるサービス(httpdとか)の実行ユーザは誰になるのでしょうか?



また、以下の認識で合ってますでしょうか?

(3)cronから起動されるプログラムの実行ユーザは、crontabに設定されている実行ユーザ

(4)OSにログイン後、ターミナルを立ち上げて、そのターミナルから起動したプログラムの実行ユーザは、OSにログインしたユーザ

よろしくお願い致します。

A 回答 (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以外)の場合は正しいです。
特権ユーザの場合は、プロセスが他のユーザに変身する事があります(できます)ので何とも言えません。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。

>特権ポートで接続を待つhttpdは特権ユーザ権限で動かす必要があります。なのでhttpdは制御プロセスをrootで動かして、
>rootで動いてる制御プロセスがhttpd.confに書かれているユーザ権限でスレーブサーバを動かしているかと思います。

httpd.confでいえば、「User」「Group」が実際プロセスを動かしているユーザ権限であることが理解できました。


>動き始めるときはrootとして開始しますが、途中で他のユーザに変身して実行される場合もあります。

>特権ユーザの場合は、プロセスが他のユーザに変身する事があります(できます)ので何とも言えません。

他のプロセスでこのように他のユーザに変身するケースというのは、どのようなケースがありますでしょうか?
また、分かり易い関連サイトなどありましたら、ご紹介していただけると助かります。

お礼日時:2011/07/27 10:24

>他のプロセスでこのように他のユーザに変身するケースというのは、どのようなケースがありますでしょうか?



それは、個々のサービスの設計思想次第じゃないでしょうか。
特に決まりがあるわけじゃないと思います。
ただ、セキュリティーに絡んだサービスほど、変身させる場合が多いのではと思いますが。

別にrootで動くhttpdを開発したっていいわけですから。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。

セキュリティ次第だということが理解できました。
個々のサービスについてもう一度見直してみたいと思います。

ありがとうございました。

お礼日時:2011/07/31 23:19

>(3)cronから起動されるプログラムの実行ユーザは、crontabに設定されている実行ユーザ



/etc/crontabとcrontab -eで編集したものとでは扱いが異なる点にはご注意を。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。

編集の方法によっても異なるところまでは注意できていませんでした。
crontabについてもう少し調べてみます。

ありがとうございました。

お礼日時:2011/07/27 10:21

(1)(2)は同じですよね。


起動スクリプト自体は、root。
その後、サービスのプロセスなどを起動する際に、設定ファイルの中にユーザーやグループが設定できるものがありますが、それはその設定されているもので起動。
物によって違うので、個々に調べてみて下さい。

(3)(4)はそのとおりで良いと思います。
(3)は異論もあろうかと思いますが、基本はcrontab -eで設定するのが一般的。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございます。

基本的なユーザ権限については理解できました。
個々の設定についてはもう少し調べてみます。

ありがとうございました。

お礼日時:2011/07/27 10:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!