
Основываясь на этомВопрос о сбое сервера, у моего пользователя git есть разрешение в sudoers на запуск скрипта-обертки для перемещения файлов в мой веб-корневой каталог с помощью git.
Все работает нормально, за исключением строк chmod и chown. После запуска скрипта файлы по-прежнему root:root вместо 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
Если скрипт запущен от имени пользователя root, почему команды chmod и chown не работают?
решение1
Строка chmod никогда не достигается, как вы можете легко проверить, вставив touch /root/checkfile
непосредственно выше. exec
не возвращается в скрипт. Я должен быть последней командой в скрипте (или ветви скрипта).