インストールしようとしています。pow
OS Xコンピュータで。 * *の特定のコンポーネントはpow
rootとして実行する必要があるため、インストールプロセスの一部にはsudo
。/tmp
インスツルメンテーションを使用すると、次pow
のコマンドを実行しようとしたときに停止が発生したことがわかりました(パラメータ配列でシステムコールを使用するため、引用符とエスケープをいくつか追加しました)。
/usr/bin/env login -qf root /bin/sh -i -c \
'exec env > \'/tmp/pow.6854.1418720624398.37948\''
目的は、ユーザーの環境変数を読むようです。 node.js(pow
書かれているように)は、環境変数への直接アクセスを提供しないか、環境が何であるかを確認しようとします。しなければならないきれいなログインシェルのようです。
ルート端末でこのコマンドをテストすると、停止の原因が明らかになります。
Brents-MacBook-Pro:~ root# '/usr/bin/env' 'login' '-qf' 'root' '/bin/sh' '-i' '-c' 'exec env > /tmp/pow.6854.1418720624398.37948'
Login incorrect
login:
login: Login timed out after 300 seconds
何らかの理由でlogin(1)
ルートで再度ログインしようとする試みが気に入らず、資格情報の入力を求められます。pow
と相互作用する必要があるという期待はないので、最終的にタイムアウトするlogin
まで何もせずにただ静かにしています。login
私が理解していないのは「何らかの理由」の一部です。login -qf root
すでにルーティングしているのになぜ失敗するのですか?マンページでは、login(1)
このオプションを-f
次のように説明します。
このオプションは、スーパーユーザーまたは自分でログインしたログインユーザーのみが使用できます。
さて、この場合、スーパーユーザーは自分でログインするように要求します。両方条件の一部が真です。なぜこれが失敗するのですか?
*Ask Differentではなくここに投稿します。これはUnixサブシステムの問題のようです。