/sbin/nologin を使うプロセスの環境変数


linux/unix の初学者です。よろしくお願いします。  
シェルに関する参考書を読んでいるとユーザーにはログインシェルが割り当てられると書かれています。このため /etc/profile,
それから~/.bash_profileのスクリプトがログインシェルの実行時に有効になるのですよね。(.bashrc との違いはよくわかってません。。)

ところで、そこまで読んでいてあることを思い出しました。  
確か、apacheなどのサーバーデーモンはログインされては困るということで、/sbin/nologin
を使っているとあちこちのウェブページに書かれていました。  
実際、/etc/passwd を読んでみると

[code]

    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
[/code]

と書かれているので、確かに nologin というシェルを指定しているのがわかりました。

ここで疑問があります。  
nologin
をログインシェルに指定した場合、ユーザーはログインできないのだとすると、ログインできないままデーモンなどのプログラムは環境変数をどのように取得しているのでしょうか。  
いまいちここのところを教えてくれるページを見つけられなかったので教えてもらえると嬉しいです。




親プロセスの環境が引き継がれるのではないでしょうか。

OS の起動システムが SysVinit だと、httpd は以下の流れで起動し、途中のシェルスクリプトで環境変数が追加／削除されます。

> /sbin/init → /etc/rc.d/rc → /etc/init.d/httpd → /usr/sbin/httpd

稼働中のプロセスの環境変数は /proc/PID/environ を見るとわかります。

`# cat /proc/941/environ | tr '\0' '\n'`




親プロセスの環境が引き継がれるのではないでしょうか。

OS の起動システムが SysVinit だと、httpd は以下の流れで起動し、途中のシェルスクリプトで環境変数が追加／削除されます。

> /sbin/init → /etc/rc.d/rc → /etc/init.d/httpd → /usr/sbin/httpd

稼働中のプロセスの環境変数は /proc/PID/environ を見るとわかります。

`# cat /proc/941/environ | tr '\0' '\n'`

