让我的 git 用户和 apache 用户具有读/写/删除权限

让我的 git 用户和 apache 用户具有读/写/删除权限

我的服务器存在权限问题。我使用用户开发人员将我的 git 存储库拉到服务器上。然后 apache 使用其自己的 apache 用户来编写和执行代码。当我执行 cron 作业时,当应用程序想要在目录中写入某些内容(即日志文件和缓存...)时,我总是会遇到问题,它使用我的开发人员权限并想要将一些由 apache 写入的内容添加到文件夹中。

我的问题是如何让我的开发人员拥有与我的 apache 相同的写入/删除权限并避免彼此之间的权限冲突?我不熟悉 Linux 命令,因此,如果您能提供链接或简单的示例,那将很有帮助。

谢谢。

在此处输入图片描述

答案1

我的想法是使目录的所有权如下:developer.app 或 apache.app

在 Bash 中:

ROOT=/some/directory/app
chown -R developer.app $ROOT

或者

chown -R apache.app $ROOT

在第一种情况下,需要将“apache”放入“app”组中,在第二种情况下,需要将“developer”放入“app”组中。然后,您需要为所有文件/目录的所有者和组设置相同的权限。如何操作取决于您使用的基础设施。可以 grepping /etc/passwd 查看第二个数字,也可以 grepping /etc/group 查看组名。如果您使用 centrify 或其他将 Linux 连接到集中式帐户数据库的软件,您可能需要 su 到特定帐户并发出id

我简化的经验法则是将所有文件rw-和脚本放在 hooks 目录中rwx,但您的代码可能需要更精细的粒度。避免 777 权限是一种很好的做法。

find $ROOT -type f -exec chmod 0660 {} \;
find $ROOT -type d -exec chmod 0770 {} \;
find $ROOT/.git/hooks -type f -exec chmod 0770 {} \;

您可能更喜欢使用ug+rwug+rwx仅添加缺少的权限。如果您已经eXec对某些文件拥有某些特定权限,则可能更好。

要自动使新文件和目录对两者都可读/可写,请将 umask 设置为 0007。

相关内容