共享 apache 文件夹中的正确权限

共享 apache 文件夹中的正确权限

我正在尝试建立一个 PHP 开发环境,可以自动处理多个项目,而无需为每个项目创建单独的 vHost,这部分运行良好。

我完成了我已完成的所有步骤:

  1. sandbox我在我的主目录中创建了一个名为的目录,并将其符号链接到/var/www/sandbox

    ln -s ~/沙盒 /var/www/沙盒

  2. 然后我创建了一个 apache 配置文件sites-avaialble并启用了它,这个配置文件是一个虚拟主机,它将每个.test域指向一个/var/www/sandbox/目录,例如,如果你浏览http://wordpress.test它将指向/var/www/sandbox/wordpress

所有这些部分都工作正常,但问题在于权限,我从我的主目录(〜/ sandbox)创建我的项目,并且在我创建的每个产品中,PHP文件都没有写权限,所以我必须手动或使用www-databash脚本将项目的每个文件和目录的所有权分配给用户。

我尝试将sandbox目录的所有者更改为www-data,但没有任何影响,而且我在此目录中创建的每个文件夹都存在权限问题。

编辑:

我真正想要实现的是,当我在~/sandbox目录下创建一个项目时,我不必手动修复文件所有权/权限,例如,现在当我想创建一个 WordPress 项目时,我必须运行这个脚本为了修复权限,我可以创建新文件夹(主题和插件),并且 php 文件具有写入权限,以便 WordPress 功能正常运行

答案1

如果您在计算机上使用 Apache 服务器仅进行开发,则可以尝试让它以本地用户身份运行。

为此,请调整APACHE_RUN_USER您的 /etc/apache2/envvars。

我不会触碰该组,因为存在风险,您随后必须更改许多所有权或权限,并确保您的 apache 服务器无法通过网络从“外部”访问。(例如,让它只监听 localhost 而不是 0.0.0.0)

答案2

根目录应该始终有执行权限和索引文件应该有允许

sudo chmod -R 775 /path/to/root-directory

另外,添加目录的所有权

sudo chown -R user:group /path/to/root-directory

最后,重新启动 Apache Web 服务器,

sudo service apache2 restart

调整 Web 服务器配置中的指令,

<Directory "/var/www/sandbox/wordpress">
    AllowOverride None
    Require all granted
</Directory>

答案3

您可以将 的组所有权更改为/var/www/sandboxwww-data然后启用写入和设置组ID在目录中递归。setgid 位使目录中所有新创建项目的组所有者与父级的组所有者相同,父级www-data在我们的 csae 中。您可以/应该将用户所有者保留为您自己的用户。

# Make you the owner and `www-data` the group owner of /var/www/sandbox
sudo chown -R <your user>:www-data /var/www/sandbox

# Give owning user and group read/write permissions, remove all permissions for everyone else
sudo chmod -R u=rwX,g=rwX,o= /var/www/sandbox

# Enable the setgid bit on /var/www/sandbox and all descendant directories
find /var/www/sandbox -type -d -exec sudo chmod g+s {} \;

相关内容