我使用普通的 Ubuntu Desktop 11.04 并使用 lamp-server 安装了我的灯堆栈。我正在尝试使用 Netbeans 作为我的 IDE。
目前,所有虚拟主机都在运行/var/www/vhostname
- 但由于我没有配置任何组或权限,如果我尝试通过 Netbeans 打开任何文件,它没有写入权限。
如何正确设置权限(或配置 Apache 或 Netbeans)以便:
- 由 php 脚本创建的文件可以
rw
由 Netbeans - Netbeans 创建的文件可以
rw
由 Apache创建
我尝试chown
对我的用户/组授予 Netbeans 写入权限,但 Apache 没有写入权限。
注意:这纯粹是用于开发机器——不在生产中使用,而且我是这个盒子上的唯一用户。
更新
我曾经使用我标记为已接受的答案中的方法,但现在我做了一些更简单的事情:
- 我将 Apache 设置为以我的用户和我的组身份运行(这可以在 httpd.conf、apache2.conf 或 envvars 中完成,具体取决于您的发行版)
- 我 chown /var/www 给我的用户和组
瞧,Apache 具有读/写访问权限,而我在处理项目时也具有读/写访问权限。
答案1
我建议做的大部分是在询问 Ubuntu 问题中描述。
对于这种特殊情况,我将安装 suPHP,简而言之,它允许您以 Apache 下的用户身份执行 PHP 脚本。
通过执行以下操作:
sudo chown -R youruser:youruser /var/www
find /var/www/ -type d -exec chmod 0755 {} \;
find /var/www/ -type f -exec chmod 0644 {} \;
安装suphp-common
并libapache2-mod-suphp
从这个ppa(什么是 PPA?如何使用它们?)
禁用mod_php5
和启用mod_suphp
sudo a2enmod suphp
sudo a2dismod php5
更新您的虚拟主机以在其底部包含此行:
suPHP_UserGroup youruser youruser
替换youruser
为用于在服务器上编辑文件的用户。重新启动阿帕奇。
从此时起,Apache 将执行您的用户的所有 php 脚本,这意味着它们可以由您的用户/组拥有,并且无需使用疯狂的权限,比如 777。由于一切都以您的用户身份运行,因此 php 脚本创建的所有文件也将归您的用户所有!使用 suPHP 还可以做许多其他很酷的事情;然而,听起来这就是您开始所需的全部内容。
答案2
您需要rw
由其他人(不仅仅是组和所有者)创建文件。应该注意的是,这样做可能会存在安全问题,但我将chown
文件夹返回给 Apache 用户/组,然后chmod o+rw
在文件夹上使用以允许 Netbeens 读取/写入文件。我还没有测试过,但它应该有效。如果您更喜欢位掩码,我相信chmod 766
在文件夹上会达到相同的结果。
答案3
将组设置/var/www/vhostname
为apache
递归。将您自己添加到apache
群组中。将权限设置var/www/vhostname
为 775。
chown -R apache /var/www/vhostname
chmod -R 775 /var/www/vhostname
usermod -a -g apache $USERNAME
这将确保您(以及apache
组中的其他人,例如 Apache)可以写入服务器目录,但其他人不能。它还将确保失控的脚本无法在您的主目录上写入乱码,或者破解的脚本不能,例如,echo PATH=/path/to/evil/script/directory:$PATH >> ~/.bashrc