权限已设置,但无法获取“direction”的状态,权限被拒绝。

请谅解,我对Linux还不太熟悉。我有一个Web服务器,它正在尝试访问用户帐户下的公共文件夹。
问题:
我正在运行一个nginx服务器,它试图访问应用程序共享的公共文件夹中的维护页面,但却收到了权限被拒绝的错误。
基本信息:
- 应用程序用户:quotr,主要组:app - Web服务器用户:ubuntu,主要组:www-data - 应用程序主目录:/home/quotr/app - 应用程序共享的公共文件夹:/home/quotr/app/shared - 维护文件的绝对路径:/home/quotr/app/shared/public/system/maintenance.html
组信息:
起初,我只将www-data组添加到app组中,希望能解决问题。当这并没有起作用时,我也尝试了反过来添加组。
www-data:x:33:apache,quotr
ubuntu:x:1000:
app:x:1001:quotr,ubuntu,www-data

所有权

整个应用程序树的所有权属于quotr:app。当我开始遇到权限问题时,我将路径中public/system/maintenance.html部分的所有权更改为维护页面(/home/quotr/app/shared/public/system/maintenance.html)的quotr:www-data

权限

/var/www/quotr-public开始,逐步向下进行:

# ls -la
drwxr-xr-x 4 quotr www-data 4096 Mar  3 21:49 .
drwxr-xr-x 5 quotr www-data 4096 Mar  3 21:49 ..
drwxr-xr-x 5 quotr www-data 4096 Mar  4 16:00 assets
drwxr-xr-x 3 quotr www-data 4096 Mar  4 19:03 system

# cd to system ls -la
drwxr-xr-x 3 quotr www-data 4096 Mar  4 19:03 .
drwxr-xr-x 4 quotr www-data 4096 Mar  3 21:49 ..
-rwxr-x--- 1 quotr www-data 3004 Mar  4 19:03 maintenance.html
drwxr-xr-x 3 quotr www-data 4096 Mar  3 21:51 pictures

测试

我正在使用以下命令测试权限:

sudo -u www-data stat /home/quotr/app/shared/public/

这导致了权限被拒绝。

最后一招

作为最后一招,我创建了以下符号链接:

quotr-public -> /home/quotr/app/shared/public/

我能成功运行以下内容,但无法深入。
sudo -u www-data stat /var/www/quotr-public

我现在完全不知道问题出在哪里。非常感谢任何指导。
编辑1
我一直在调整权限,所以可能有些不同,请查看下面所请求的输出。 'namei -lx /home/quotr/app/shared/public/system/maintenance.html' 的输出如下。
Drwxr-xr-x root  root     /
drwxr-xr-x root  root     home
drwx------ quotr app      quotr
drwxr-xr-x quotr app      app
drwxr-xr-x quotr www-data shared
drwxr-xr-x quotr www-data public
drwxr-xr-x quotr www-data system
-rw-r--r-- quotr app      maintenance.html

执行 'namei -lx /var/www/quotr-public/system/maintenance.html' 的输出

Drwxr-xr-x root   root     /
drwxr-xr-x root   root     var
drwxrwsr-x root   www-data www
lrwxrwxrwx ubuntu www-data quotr-public -> /home/quotr/app/shared/public/
Drwxr-xr-x root   root       /
drwxr-xr-x root   root       home
drwx------ quotr  app        quotr
drwxr-xr-x quotr  app        app
drwxr-xr-x quotr  www-data   shared
drwxr-xr-x quotr  www-data   public
drwxr-xr-x quotr  www-data system
-rw-r--r-- quotr  app      maintenance.html

谢谢。

请添加namei -lx /home/quotr/app/shared/public/system/maintenance.html的输出。 - muru
这就是问题所在。/home/quotr对其他人没有执行权限。 - muru
即使www-data属于app组,也是可以的。 - gwnp
很遗憾,我通过 chmod o+x /home/quotr 添加了权限,但它仍然无法访问。 - gwnp
Apache的选项中是否启用了FollowSymlinks - muru
是的,我已经尝试在/etc/nginx/nginx.conf文件的http块中将'disable_symlinks off;'语句作为首行和末行。 - gwnp
你找到解决方案了吗? - Zanna
@Zanna 很抱歉,我之前没有时间去研究这个问题,也没有再次查看。不过在接下来的几周里,我会有时间去解决,并且一旦弄清楚了,我会更新情况。谢谢你的关心。 - gwnp
1个回答

我觉得你差不多就快解决了,得到了muru的帮助。树中的所有文件夹都需要由www-data可执行。由于quotr文件夹归属于app组,而www-data也在app组中,最好将执行权限授予组而不是其他人:
chmod g+x quotr

作为一个附带的建议... 我用nginx作为www-data构建了几个网站。对我来说,效果很好的做法是让www-data拥有所有权,作为用户和组。然后我添加我的用户和其他需要访问www-data组的人。

1o+x 给予“其他人”权限,即给予所有人权限。如果每个人都有权限,那么授予组权限将没有帮助 ;) - Zanna
确实...其他人并不真正是"其他人",他们实际上就是"每个人"。嗯...从来没有这样想过。好的!我根据你的意见更新了,谢谢Zanna。 - Paul Brackin
但这并没有回答问题 :( - Zanna
谢谢,这实际上最后成为了问题。不幸的是,我忘了先检查这篇帖子,而是自己发现了它。 - gwnp

  • 相关问题