作为一个极端新手,我很难管理我的第一个盒子的所有权和权限。我不知道如何使用一个用户进行部署,我们将调用他deploy
并使用用户操作我的 php 应用程序www-data
。
目前,我知道我的服务器www-data
通过此功能运行,<?php echo(exec("whoami")); ?>
但chown
每次部署时我都必须在部署和 www-data 之间进行。必须有一种更简单的方法来使用一个用户进行部署,并且仍然作为 www-data 运行。
编辑:这是有关文件夹中 ls- l 的输出。您将看到用户部署和组 www-pub,该组来自尝试将两个不同的用户添加到一个新组并 chown 其中一个以希望他们都拥有权限(newb alert)
drwxrwxr-x 4 deploy www-pub 4096 Mar 7 01:41 example.com
我在用户deploy下使用 capistrano 进行部署,然后一旦完成,我就可以访问 www-data,否则我无法使用 php 来操作文件。我也不确定如何更改正在运行的用户 apache。
部署后更改权限是很正常的。我为代码部署编写脚本。你现在的部署方式是什么?
我阅读并重新阅读了几次,看看我是否正确。所有权似乎是这样分解的:
www-data
用户deploy
用户www-data
用户我的问题是,我不明白这个困境。我认为事情应该是这样的。
如果 Web 服务器可以写入存储 PHP 脚本的目录,那么您只是在请求某人重写您的应用程序。传统上,Web 服务器只被授予对脚本的读取执行权限。
现在,最后一颗子弹是我认为让你痛苦的东西。不要尝试在程序/应用程序文件中写入数据文件。这是一种糟糕的编程习惯。只有一次,设置一个
www-data
用户可写的目录。这也充满了危险,因为各种会话可能会相互覆盖,但是您可以使用 cookie/标签创建子目录并将文件放在那里。如果您选择子目录方法,请不要忘记定期清理。如果我错过了重点,请告诉我。这似乎在未答复队列中坐了很长时间。如果您已修复它,请“回答您自己的问题”并关闭它。如果这个或另一个答案修复了它,请将其标记为已解决。