この質問に対する投稿された回答のいくつかは正しく、組み合わせて必要になる場合があります。また、JETTY_USER の設定には、いくつかの間接的な要件がある場合があります。
root 以外のユーザーとして jetty を実行するには、そのユーザーが特定のファイル/ディレクトリ/ツリーにアクセスできるようにする適切な権限が必要です。これらのファイルシステム オブジェクトには、<jetty-home>
ツリー、およびいずれかまたはどこ/var/run/jetty
でもが含まれ、デフォルトのままにしない場合は に設定されます。JETTY_RUN
JETTY_START_LOG
JETTY_LOGS
/var/run/jetty
設定によってユーザーとして jetty を実行するJETTY_USER
(例:JETTY_USER=jetty
非 root として OS サービスを実行する場合) には、OS ユーザーが有効なシェル (例: /var/sh
) を /etc/passwd に設定する必要もあります。そのユーザーに無効なシェル (例: /usr/sbin/nologin
) を設定し、このサービス ユーザーのセキュリティ ホールを閉じてログインを許可することをお勧めします。その場合、jetty 起動環境は JETTY_SHELL (例: JETTY_SHELL=/bin/sh
) も設定し、jetty 実行可能ファイルを実行する非ログイン セッション用のシェルを提供する必要があります。
これらの設定は、サービスの起動スクリプトで行うことができます (例:/etc/init.d/jetty
デフォルトではコメントアウトされています)。ただし/etc/default/jetty
、起動スクリプトにはロジックやその他のコンテンツが含まれているため、そのままにしておくことをお勧めします。
また、jetty を root として実行する (構成された jetty ランタイム ユーザーを変更せずにサービスとして起動するなど) と、root が所有するファイル (ログファイルなど) が作成されることにも注意してください。ランタイム ユーザーを非ルート ユーザーに変更すると、root が所有するファイルを非ルート ユーザーとして再書き込みしようとするため、jetty が失敗する可能性があります。たとえば<jetty-base>/logs/<YYYY>_<MM>_<DD>.jetty.log
。この問題を解決するには、そのファイルの所有者を root 以外のユーザーに変更するか、ファイルを削除する必要があります。
そして、このような問題が原因で jetty が起動に失敗した場合、ログには書き込まれず (何もアクセスできず、jetty は実際には実行されていません)、出力するだけであることに注意してくださいStarting Jetty: FAILED <datetime>
。