私のbashスクリプトを呼び出すpost-receiveフックがあります(ローカルリポジトリをプルしてJavaサーバーを再起動します)。
post-receive フックの所有者情報は次のとおりです。
-rwsr-x--x 1 cyril devs 676 19 dec. 14:45 post-receive
ご覧のとおり、他のユーザーに対してもsetuid bit
実行できるように、このスクリプトにを設定しました。cyril/devs
このスクリプトの内容はかなり単純です。
echo "Running post-receive hook"
echo "Server will be up and running in about 1 minute"
/home/project/start_dev restart &
私のスクリプトstart_dev
にはこれらの権利があります:
-rwsr-x--- 1 cyril devs 1515 19 dec. 14:41 start_dev
注: また、setuid.
アカウントを使用してサーバーに何かをプッシュすると、cyril
完全に機能します。
別のアカウントを持つ他の誰かがサーバーにプッシュすると、次のようになります。
remote: /home/project/start_dev: line 52: kill: (11490) - Operation not allowed
(kill はインスタンスを停止するために使用されます。)
なぜこのエラーが発生するのか、スクリプトはcyril
ユーザーではなくとして実行する必要があるため、このインスタンスを強制終了する権利があるはずですよね?
私は何を間違っていますか?