Skip to content
On this page

2023-08-09 20:35:51

顺便在 GPT 加持下解决了另一个困扰已久的问题: nginx 直接提供静态文件的时候显示没有权限访问文件,即使权限设置为 0755 了。根源在于缺乏上级目录的权限。

如果 www-data 用户没有权限访问 /home/ubuntu 目录,那么它也将无法访问 /home/ubuntu/testfile,即使 /home/ubuntu/testfile 的权限设置是正确的。这是由于在 Unix 和类 Unix 系统中,你需要拥有一个目录的执行(x)权限才能查看或进入该目录。

解决这个问题,你需要给 www-data 用户对 /home/ubuntu 目录的执行权限。注意不要给出读取权限,否则其他用户可以列出 /home/ubuntu 中的所有文件和子目录。

sudo chmod o+x /home/ubuntu 这个命令会给所有系统用户(包括 www-data)赋予对 /home/ubuntu 目录的执行权限(也就是进入该目录的权限)。这意味着,任何用户都可以进入到 /home/ubuntu 目录下。

然而请注意,即使其他用户可以进入 /home/ubuntu,但如果他们没有读取 (r) 权限,那么他们将无法列出该目录下的文件和子目录。只有当他们确切知道子目录或文件的名称时,才能继续访问下一层目录或者文件。

尽管如此,从安全角度考虑,我们通常不建议随意赋予非所有者的其他用户进入某个用户的家目录的权限,除非你清楚这样做的后果,并且这是必须的。如果可能,更好的做法是将需要被web服务器访问的文件放在一个公共区域,例如 /var/www