web-dev-qa-db-ja.com

スーパーバイザに別のユーザーとしてプログラムを実行させるにはどうすればよいですか?

スーパーバイザが拡張環境変数を使用してコマンドを実行するのに多くの問題を抱えています。

私の監督会議。

; supervisor config file

[unix_http_server]
file=/var/run//supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
user = a-user-name
environment = HOME='/home/a-user-name',APP='staging.example.com',SYMFONY_ENVIRONMENT='staging'

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run//supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf
files = /home/a-user-name/apps/staging.example.com/current/app/Resources/config/supervisor/*.conf

そしてunder-version-control.conf~/apps/staging.example.com/current/app/Resources/config/supervisor

[program:hank-message-forwarder]
stdout_logfile = /var/log/pink-tie/%(program_name)s-out.log
stderr_logfile = /var/log/pink-tie/%(program_name)s-err.log
logfile_maxbytes = 50MB
logfile_backups = 10
identifier = hank-message-forwarder
command = %(ENV_HOME)s/apps/%(ENV_APP)s/current/bin/hank forward-messages tcp://*:5500 tcp://*:5600

ここで何が悪いのですか?私が得ているエラーはまったく役に立ちません。 UNIXサーバーに接続できないという事実について不満がありますが、filesuserおよびenvironmentディレクティブを削除すると(基本的に私が変更したすべて)すべてが正常に戻ります。

7

しかし、filesuser、およびenvironmentディレクティブ(基本的に私が変更したもの)をすべて削除すると、すべて正常に戻ります。

構文に問題があるようですね。 オンラインドキュメント ...を参照した後、userエントリは適切に見えます。 user = a-user-nameしかし、environmentは奇妙に見えます。一重引用符を二重引用符に変更してみてください。

これから変更してください。

environment = HOME='/home/a-user-name',APP='staging.example.com',SYMFONY_ENVIRONMENT='staging'

これに;

environment = HOME="/home/a-user-name",APP="staging.example.com",SYMFONY_ENVIRONMENT="staging"

編集:

"files="行の1つにアスタリスクがあることに気づきました。これは私がこれまでに見たことがない実際には(完全なファイル名のみを指定しました)。ただし、オンラインドキュメントにはワイルドカード( "*"および "?")が表示されます。

ただし、オンラインドキュメントでは次の点に言及しています(強調を追加)。

構成ファイルに[include]セクションが含まれている場合、“files”という名前の単一のキーが含まれている必要があります。このキーの値は、構成内に含まれる他の構成ファイルを指定します。

9
Signal15

実際に詳細を見ることなく。一つの考えが思い浮かんだ。そのユーザーに十分な権限がない限り、別のユーザーとしてプロセスを実行することはできません。

質問はあなたにあります、スーパーバイザはrootまたはより低い特権のユーザーとして実行されていますか?

0
Matt