
Basierend aufServerfehler-Frage, mein Git-Benutzer hat in Sudoers die Berechtigung, ein Wrapper-Skript auszuführen, um Dateien mit Git in mein Webroot zu verschieben.
Bis auf die Zeilen chmod und chown funktioniert alles einwandfrei. Nach der Ausführung des Skripts sind die Dateien immer noch root:root statt apache:apache.
#!/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
Da das Skript als Root ausgeführt wird, warum sollten die Befehle chmod und chown nicht funktionieren?
Antwort1
Die chmod-Zeile wird nie erreicht, wie Sie leicht überprüfen können, indem Sie touch /root/checkfile
direkt darüber einfügen. exec
kehrt nicht in das Skript zurück. Ich muss der letzte Befehl in einem Skript (oder einem Skriptzweig) sein.