让PHP和普通用户编辑相同文件的三种方法

时间:2018-07-14 19:35:30

标签: server file-permissions rsync

我是一名Web开发人员,对于一些即将进行的项目,我想使用基于文件的CMS。这意味着我在开始时创建的许多文件必须稍后可由PHP用户编辑,但对于我的用户仍然保持可编辑状态(反之亦然)。我的PC运行Debian 9,我很喜欢但我并不了解,但是我还刚刚用Debian 9设置了本地网络服务器来进行备份和可能的文件共享。 (我正在使用Webmin进行配置,这反映了我的命令行技能水平。)

在我的在线共享托管服务器上,PHP用户和FTP用户似乎相同,并且644/755权限可以正常工作,我所使用的CMS也建议这样做。我想在我的计算机上模仿这个,所以我不必一直在弄弄权限。但是我该怎么做呢?目前,我的普通用户(anna)无权访问www-data的文件,反之亦然。将它们放在同一组中仍然意味着更改文件权限。使anna成为PHP用户是一个坏主意(据我所知),因为anna具有sudo权限。

到目前为止,我已经研究了三种我不太了解的可能解决方案,我想知道哪种是最好的选择。

  1. 在我的计算机上进行本地开发,并使用apache-mpm-itk或suPHP来让PHP编辑文件(我从this question on ServerFault得到了这个想法)。
  2. 在我的计算机上本地开发,然后rsync将文件grunt-rsync到服务器,并以某种方式使rsync将所有权设置为www-dataanother ServerFault thread helping here )。
  3. 使用SSHFS在我的计算机上挂载www-data拥有的项目的 server 目录,然后直接在服务器上编辑文件或从中复制文件我的本地目录中有grunt-copy

您怎么看:从安全性和易用性的角度来看,哪种方法最好?还是您知道更好的一个?

感谢您抽出宝贵的时间阅读和思考此问题!
安娜〜

1 个答案:

答案 0 :(得分:0)

我知道了!最后,我最终阅读了有关将PHP作为CGI而不是作为Apache模块运行的信息,这将解决我的权限问题。另外,据我了解,当我是本地计算机上唯一使用它的人时,无需采取额外的安全预防措施。

万一有人发现它可能对您有所帮助,这是我所做的(基本上遵循these instructions):

  1. 我安装了php7.0-fpm
  2. 编辑了 /etc/apache2/sites-enabled/000-default.conf ,并将以下内容放在</VirtualHost>之前:

    DirectoryIndex index.php
    <LocationMatch "^(.*\.php)$">
        ProxyPass fcgi://127.0.0.1:9000/var/www/html
    </LocationMatch>
    
  3. 我激活了Apache模块proxy_fcgi(通过Webmin,显然可以自动重启Apache)
  4. /etc/php/7.0/fpm/pool.d/www.conf 中,我注释了一条侦听行,并在下面放置了另一行:

    ; listen = /run/php/php7.0-fpm.sock
    listen = 127.0.0.1:9000
    
  5. 然后我使用以下命令重新启动PHP-FPM: /etc/init.d/php7.0-fpm restart (与说明略有不同,我使用的是Debian 9)。之后,phpinfo()给了我服务器API“ FPM / FastCGI”。
  6. 最后,我在三个位置将用户和组从www-data更改为anna,两次在 /etc/php/7.0/fpm/pool.d/www.conf < / strong>,然后再次在 /usr/lib/tmpfiles.d/php7.0-fpm.conf 中(最后一点可能是特定于Ubuntu / Debian的,感谢Keith的{ {3}})。

就是这样! :-)