Создать символическую ссылку в текущем веб-сервере документа корневых разрешений

У меня есть статические ресурсы (mp3s и изображения), которые я хочу использовать на веб-сайте, размещенном на виртуальном хосте 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-данных получить к нему доступ?

0
задан 23 December 2017 в 17:02

1 ответ

Каковы права доступа к каталогу /media/USER/KINGSTON/audio? Помните, что Apache требуется + x в каталогах, которые он проходит.

Таким образом, /media/, /media/USER, /media/USER/KINGSTON/ и /media/USER/KINGSTON/audio должны иметь + x для мира, чтобы www-данные могли иметь к ним доступ. Это можно сделать с помощью sudo chmod +x /path для каждого из каталогов, указанных выше. Если устройство KINGSTON не является файловой системой Unix, вы можете столкнуться с проблемами, поскольку оно не имеет традиционных списков ACL Unix.

Кроме того, я бы, вероятно, добавил его как обычную точку монтирования, если это постоянное решение. Чтобы узнать, как это сделать, взгляните на этот вопрос & amp; A

. В качестве краткого примера отметим, что # as prompt обозначает команды, запускаемые от имени 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
0
ответ дан 23 December 2017 в 17:02

Другие вопросы по тегам:

Похожие вопросы: