我是一名Web开发人员,对于一些即将进行的项目,我想使用基于文件的CMS。这意味着我在开始时创建的许多文件必须稍后可由PHP用户编辑,但对于我的用户仍然保持可编辑状态(反之亦然)。我的PC运行Debian 9,我很喜欢但我并不了解,但是我还刚刚用Debian 9设置了本地网络服务器来进行备份和可能的文件共享。 (我正在使用Webmin进行配置,这反映了我的命令行技能水平。)
在我的在线共享托管服务器上,PHP用户和FTP用户似乎相同,并且644/755权限可以正常工作,我所使用的CMS也建议这样做。我想在我的计算机上模仿这个,所以我不必一直在弄弄权限。但是我该怎么做呢?目前,我的普通用户(anna
)无权访问www-data
的文件,反之亦然。将它们放在同一组中仍然意味着更改文件权限。使anna
成为PHP用户是一个坏主意(据我所知),因为anna
具有sudo
权限。
到目前为止,我已经研究了三种我不太了解的可能解决方案,我想知道哪种是最好的选择。
apache-mpm-itk
或suPHP来让PHP编辑文件(我从this question on ServerFault得到了这个想法)。rsync
将文件grunt-rsync
到服务器,并以某种方式使rsync
将所有权设置为www-data
(another ServerFault thread helping here )。www-data
拥有的项目的 server 目录,然后直接在服务器上编辑文件或从中复制文件我的本地目录中有grunt-copy
。您怎么看:从安全性和易用性的角度来看,哪种方法最好?还是您知道更好的一个?
感谢您抽出宝贵的时间阅读和思考此问题!
安娜〜
答案 0 :(得分:0)
我知道了!最后,我最终阅读了有关将PHP作为CGI而不是作为Apache模块运行的信息,这将解决我的权限问题。另外,据我了解,当我是本地计算机上唯一使用它的人时,无需采取额外的安全预防措施。
万一有人发现它可能对您有所帮助,这是我所做的(基本上遵循these instructions):
php7.0-fpm
编辑了 /etc/apache2/sites-enabled/000-default.conf ,并将以下内容放在</VirtualHost>
之前:
DirectoryIndex index.php
<LocationMatch "^(.*\.php)$">
ProxyPass fcgi://127.0.0.1:9000/var/www/html
</LocationMatch>
proxy_fcgi
(通过Webmin,显然可以自动重启Apache)在 /etc/php/7.0/fpm/pool.d/www.conf 中,我注释了一条侦听行,并在下面放置了另一行:
; listen = /run/php/php7.0-fpm.sock
listen = 127.0.0.1:9000
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}})。就是这样! :-)