在当前 Web 服务器文档中创建具有 root 权限的符号链接

在当前 Web 服务器文档中创建具有 root 权限的符号链接

我有一些静态资源(mp3 和图像),想要在 Apache 虚拟主机上托管的网站中使用,其配置如下:

<VirtualHost *:80>
ServerName example.com
    serverAlias myexample.loc   
    DocumentRoot /home/USER/www/yii2/web
    <Directory "/home/USER/www/yii2/web">
        AllowOverride All
        Options Indexes FollowSymLinks MultiViews
        Require all granted
    </Directory>
</VirtualHost>

这些资源位于闪存中的以下路径上:

/media/USER/KINGSTON/audio

我已经在站点的文档根目录中为上述目录创建了一个符号链接,使用ls -s如下方法:

sudo ln -s /media/USER/KINGSTON/audio /home/USER/www/yii2/web 

但是,尝试访问任何资源都会导致403 Forbidden错误。我该如何给出安全权限允许 www-data 用户访问它吗?

答案1

目录的权限是什么/media/USER/KINGSTON/audio?请记住,Apache 需要在其遍历的目录上使用 +x。

因此/media//media/USER/media/USER/KINGSTON//media/USER/KINGSTON/audio需要为 world 加上 +x,以便 www-data 能够访问它。sudo chmod +x /path对于上述每个目录,都可以使用 、 来完成。如果 KINGSTON 设备是不是unix 文件系统,您可能会遇到挑战,因为它没有传统的 Unix ACL。

此外,如果这是一个永久的解决方案,我可能会将其添加为正常挂载点。至于如何做到这一点,看看这个问答

举一个简单的例子 - 请注意,# 提示表示以 root 身份运行命令,$ 表示普通用户运行。

/tmp # mkdir foo
/tmp # chmod 754 foo
/tmp # cd foo
/tmp/foo # mkdir bar
/tmp/foo # chmod 755 bar
/tmp/foo # ls -la
total 20
drwxr-xr--  3 root root  4096 Dec 24 14:24 .
drwxrwxrwt 57 root root 12288 Dec 24 14:23 ..
drwxr-xr-x  2 root root  4096 Dec 24 14:24 bar
# Note that the directory bar has read and execute permissions for everyone, but /tmp/foo has only read for others than group and user.
/tmp/foo # echo "foo" > bar/foo 
$ cd /tmp/foo/bar
bash: cd: /tmp/foo/bar: Permission denied
$ cat /tmp/foo/bar/foo
cat: /tmp/foo/bar/foo: Permission denied
/tmp/foo # chmod +x . #Add execute permission for world to /tmp/foo
$ cat /tmp/foo/bar/foo
foo

相关内容