私はまだわかりにくいですchroot
。一部のパッケージは独自のユーザー(_packagedaemon
)をインストールし、独自のディレクトリ(/var/package/
)を作成します。
しかし、プロセスがで実行されるように構成されているかどうかはわかりません。chroot
どこで確認するのかわかりません。
答え1
fstat
(実行中の)プロセスのルートディレクトリを示します。
例1:nginx
nginx
労働者はルートを走っています。pgrep
以下を使用してプロセスIDを取得できます。
# pgrep -lf nginx
58845 nginx: worker process
41019 nginx: master process /usr/local/sbin/nginx
次に、これを使用して、fstat
どのファイル/ソケットが開いているかを確認します。
# fstat -p 58845 | grep -e MODE -e " root"
USER CMD PID FD MOUNT INUM MODE R/W SZ|DV
www nginx 58845 root /var/www 2 drwxr-xr-x r 512
root
この行(列の行FD
)は、プロセスがINUM
マウントポイントのinode 2(列)に根ざしていることを示します/var/www
。その後、次のようにノード名を見つけることができますfind
。
# find -x /var/www -inum 2
/var/www
したがって、この場合、nginx
ワーカーはchrootedです/var/www
。基本プロセスはchrootedとして実行されません。
# fstat -p 41019 | grep " root"
空のように見えます。デフォルトプロセスはすべての設定ファイルを読み取り、次にchrootされたワーカープロセスをフォークします。
例2:nsd
nsd
nginx
基本プロセスもchrootとして実行されるため、若干異なります/var/nsd
。
# pgrep -lf nsd
28155 nsd: server 1
45373 nsd: main
3681 nsd: xfrd
# fstat -p 45373 | grep -e MODE -e " root"
USER CMD PID FD MOUNT INUM MODE R/W SZ|DV
_nsd nsd 45373 root /var 8580 drwxr-xr-x r 512
# find -x /var -inum 8580
/var/nsd