upstartを使用して起動時にWebサーバーアプリケーションを開始しました。これは、スタートアップスクリプトです。
# web app node upstart file at /etc/init/webapp.conf
description "web application"
start on started mongodb
stop on runlevel [06]
respawn
respawn limit 10 100
env NODE_ENV=production
pre-start script
ulimit -n 2048
end script
exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod
これは、Ubuntuサーバー10.04 LTSで問題なく動作し、非常に満足しています。
ただし、SSHを使用してmainuser
(これはsudoerではありません)としてログインし、作業ディレクトリを最新の展開バージョンに更新する展開シェルスクリプトがあります。
ここでの問題は、アプリケーションが新しいソースファイルをロードするために、サービスを再起動する必要があることです。ただし、mainuser
...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
...それを止めようとするとき。実行するsudo stop webapp
必要がありますが、このユーザーはsudoerではないため、これを実行できません。セキュリティ上の理由から、私も彼をsudoerにしたくありません。また、sudoパスワードを挿入したくありません。
だから、どのように私は許可しないmainuser
で実行するstop webapp
とstart webapp
?
1
ユーザーをsudoersに追加することで、どのようなセキュリティの問題が心配ですか?ユーザーに特定のコマンドのみを許可するルールを記述できます。また、パスワードプロンプトを回避するnopasswdオプションを含めることもできます。取得する特定のエラーについては、開始/停止が/ sbinにあるためです。これは通常、通常のユーザーのパスの一部ではありません。したがって、「/ sbin / stop」を実行するか、パスにsbinを追加できます。これは、ルートを必要とする起動/停止スクリプトに他の項目がない限り機能する場合があります。
—
デレクプレスナル
@DerekPressnall、ありがとう、しかし私が走るとき私
—
トム
/sbin/stop webapp
は得るstop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
。mainuser
このコマンドの実行のみを許可するにはどうすればよいですか?
このエラーは、このユーザーが管理者権限を持っていないことが原因です。
—
トム