6

I have installed Jetty 9 (latest version) by extracting the archive in /opt/jetty.

The start.jar runs fine, but I want the bash service bin/jetty.sh, to be run by a non-root user.

The issue I'm having with the bash script is that : when I dont specify a value for $JETTY_USER in /etc/default/jetty (it uses root user), Jettyworks. But when I assign a value to it, Jetty fail with the message: Starting Jetty: FAILED, and no log.

So, how do I create a user that can run the jetty?

4

8 に答える 8

3

私は同じ問題に直面しました。私の場合、段階的なインストール ガイドライン「jetty.sh を使用して Unix サービスを起動する」に従って、Jetty v 9.2.10.v201503 を pcDuino v3、Ubuntu 14.04 にインストールしました (eclipse.org のドキュメントを参照)。

手順は root として実行されるため、$JETTY_BASE ディレクトリ内のファイルとディレクトリの所有権 (root と jetty) が混在することになりました。

JETTY_LOGS=$JETTY_BASE/logs と JETTY_USER=jetty を /etc/default/jetty ファイルに追加し、chown –R jetty:jetty $JETTY_BASE を再発行しました。

これらの手順の後、Jetty は jetty ユーザーの資格情報の下で実行されます。とても簡単でしたが、このメモがプロの管理者ではない他の人に役立つことを願っています.

于 2015-04-03T11:41:48.857 に答える
1

この質問に対する投稿された回答のいくつかは正しく、組み合わせて必要になる場合があります。また、JETTY_USER の設定には、いくつかの間接的な要件がある場合があります。

root 以外のユーザーとして jetty を実行するには、そのユーザーが特定のファイル/ディレクトリ/ツリーにアクセスできるようにする適切な権限が必要です。これらのファイルシステム オブジェクトには、<jetty-home>ツリー、およびいずれかまたはどこ/var/run/jettyでもが含まれ、デフォルトのままにしない場合は に設定されます。JETTY_RUNJETTY_START_LOGJETTY_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>

于 2018-04-01T23:26:14.763 に答える
1

${jetty.home}/logs/start.log(または同様の名前のログ ファイル) を確認します。

それによって、失敗した理由がわかります。

また、オプションの setuid サポートを調べることもできます。

http://www.eclipse.org/jetty/documentation/current/setuid.html

于 2013-08-01T16:38:41.433 に答える