
これに基づいて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
スクリプトに戻りません。スクリプト (またはスクリプトのブランチ) の最後のコマンドである必要があります。