chmod と chown が sudo 呼び出しスクリプトで動作しない

chmod と chown が sudo 呼び出しスクリプトで動作しない

これに基づいてServerfault の質問私の git ユーザーは、git を使用してファイルを Webroot に移動するラッパー スクリプトを実行する権限を sudoers で持っています。

chmod および chown 行を除いてすべて正常に動作しています。スクリプトの実行後、ファイルは apache:apache ではなく、root:root のままです。

#!/bin/sh

echo
echo "**** Pulling changes into Prime [Hub's post-update hook]"
echo
cd /usr/local/apache/htdocs || exit
unset GIT_DIR
git pull hub master
exec /usr/libexec/git-core/git-update-server-info
chmod -R 0644 /usr/local/apache/htdocs
chown -R apache:apache /usr/local/apache/htdocs

スクリプトは root として実行されているのに、chmod コマンドと chown コマンドが機能しないのはなぜでしょうか?

答え1

chmod 行に到達することはありません。これは、touch /root/checkfile直接上に挿入することで簡単に確認できます。execスクリプトに戻りません。スクリプト (またはスクリプトのブランチ) の最後のコマンドである必要があります。

関連情報