防止 Git Push live master 更改文件权限和所有权
Prevent Git Push live master from changing file permission and ownership
我已经和这个问题斗争了好几天了...每次我做 git push live master
(使用 git post 挂钩)...远程文件权限和所有权正在被每次都更改回默认值,这会使网站上的页面抛出 500 错误。我通常通过 运行ning sudo chown -Rf www-data:www-data /var/www/<Website-Root-Folder>
来解决这个问题,但我希望它永久固定,所以我不必每次都这样做。
我做了以下,我在这里找到:Permissions with Git Post-Receive
sudo usermod -a -G www-data root // As I'm doing my push using the root user.
抱歉,我是 git、linux 的新手,不知道还能做什么。如果我在每次推送后都不必 运行 这个 sudo chown -Rf www-data:www-data /var/www/<Website-Root-Folder>
来帮助完成这项工作,我们将不胜感激。
谢谢
您编写了一个脚本,该脚本在某个时候执行 git checkout
- 或等效命令 - 实际上在您的目标文件夹中创建和更新文件。
你应该让这个命令是 运行 你想要的用户,例如:
sudo -u www-data git checkout ...
您可能需要设置存储库本身的访问权限,以便用户 www-data
可以 读取 存储库 :
如果您的存储库对所有用户具有 r
访问权限,您就无需再做其他事情了,
您可以决定将该特定存储库中的所有文件组设置为 www-data
:
# in your post-receive script :
chrgp www-data -R .
或在该 repo 的目录上设置 setgid 位,以便在其中创建的文件和目录自动继承该目录的组(而不是用户组):
# run once on your server, as root user :
$ chmod -R g+s /path/to/repo.git
$ chgrp -R www-data /path/to/repo.git
$ ls -ld /path/to/repo.git
drwxrwsr-x 9 root www-data 4096 janv. 13 14:20 repo.git
^
# notice the 's' in the access rights
我已经和这个问题斗争了好几天了...每次我做 git push live master
(使用 git post 挂钩)...远程文件权限和所有权正在被每次都更改回默认值,这会使网站上的页面抛出 500 错误。我通常通过 运行ning sudo chown -Rf www-data:www-data /var/www/<Website-Root-Folder>
来解决这个问题,但我希望它永久固定,所以我不必每次都这样做。
我做了以下,我在这里找到:Permissions with Git Post-Receive
sudo usermod -a -G www-data root // As I'm doing my push using the root user.
抱歉,我是 git、linux 的新手,不知道还能做什么。如果我在每次推送后都不必 运行 这个 sudo chown -Rf www-data:www-data /var/www/<Website-Root-Folder>
来帮助完成这项工作,我们将不胜感激。
谢谢
您编写了一个脚本,该脚本在某个时候执行 git checkout
- 或等效命令 - 实际上在您的目标文件夹中创建和更新文件。
你应该让这个命令是 运行 你想要的用户,例如:
sudo -u www-data git checkout ...
您可能需要设置存储库本身的访问权限,以便用户 www-data
可以 读取 存储库 :
如果您的存储库对所有用户具有
r
访问权限,您就无需再做其他事情了,您可以决定将该特定存储库中的所有文件组设置为
www-data
:# in your post-receive script : chrgp www-data -R .
或在该 repo 的目录上设置 setgid 位,以便在其中创建的文件和目录自动继承该目录的组(而不是用户组):
# run once on your server, as root user : $ chmod -R g+s /path/to/repo.git $ chgrp -R www-data /path/to/repo.git $ ls -ld /path/to/repo.git drwxrwsr-x 9 root www-data 4096 janv. 13 14:20 repo.git ^ # notice the 's' in the access rights