如何在linux上启用apache / PHP,git和我自己的完全www访问?

/ var / www文件夹属于根用户 (用户,组)。 这意味着www-data (apache / php组)没有访问权限。 这是由于PHP不允许创build文件导致写入错误。

我解决了CHMOD 0777整个/ var / www文件夹,因为它只是一个私人开发机器。 但是,这仍然会导致问题,因为CHMOD只在运行时存在的文件上工作 – 而不是在之后创build的文件。 所以,如果我要创build一个新的文件,那么PHP将无法rwx它。

而现在我使用Git来带来更多的文件,并且我正在努力获得apache / php,git我自己的用户,以便与其他所有文件一起玩。

如何为我们三个人启用完全访问?

创build一个www或类似的命名组,并将要写入/ var / www的所有用户添加到该组。 然后chown -R www-data:www完整/ var / www目录。 这应该允许你访问你需要的。

除此之外,只需清理0777权限并将其重置为正常。

我希望能解决:-)

chmod 777是一个坏习惯,即使它是一台私人机器…学习如何在一个安全的环境中正确地做事情意味着当你需要在不安全的环境中做这件事时,你就知道如何去做。 而且你也不会试图发布一个安装说明“chmod -R 777 / var / www / myapp”的应用程序。

伯顿的答案就是我所做的。 我的开发人员帐户位于组www-data中,而www-data是在所有文件中设置的组。

看看“man 2 chmod”,看看group-sticky-bit在做什么。 当您是主要组时,它非常方便,而不是您希望分配给您在那里创build的新文件的组。 它将允许您创build的文件自动设置到您设置的目录中的www-data组。

如果您的networking服务器没有创build足够宽的权限的新文件(当您想要0775时创build0755),请查看其umask设置。

对于Perl CGI,我通常使用suexec,以便CGI作为特定的用户而不是www-data运行。 正如jdoss指出的那样,你需要一个PHP特定的模块。 还有一个Apache2 mpm(prefork),允许每个虚拟主机作为特定的用户运行,即使是正常的读取。 我还没有尝试过这个,但是如果它运行的很好,这对安全问题将会有很大的帮助。

你可以做的是设置一个Apache虚拟主机和文档根据我的用户的主目录(/ home /用户名/ public_html)内的目录。 这允许您的用户和Git操作文件,而不必担心太多的权限/所有权。 从那里你可以懒惰,并更改Apache / PHP用户作为您的用户运行(我认为这将工作),或者你可以看看设置SuPHP( http://www.suphp.org/Home.html )将使用其所有者的权限运行您的PHP脚本。