Ian*_*Ian 1 sudo chmod shell-script chown
基于此Serverfault question,我的 git 用户在 sudoers 中具有运行包装脚本的权限,以使用 git 将文件移动到我的 webroot 中。
除了 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
Run Code Online (Sandbox Code Playgroud)
由于脚本以 root 身份运行,为什么 chmod 和 chown 命令不起作用?
永远不会到达 chmod 行,因为您可以通过touch /root/checkfile直接在上面插入来轻松检查。exec不会返回到脚本中。I 必须是脚本(或脚本分支)中的最后一个命令。