我有要在具有以下配置的Apache虚拟主机上托管的网站中使用的静态资源(mp3和图像):
<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数据用户访问的安全权限?
/media/USER/KINGSTON/audio
目录的权限是什么?请记住,Apache遍历的目录需要+ x。
因此/media/
,/media/USER
,/media/USER/KINGSTON/
以及/media/USER/KINGSTON/audio
需要有+ x对于世界www数据才能够访问它。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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句