我想使用我的 debian8 机器上已有的证书设置一个 node.js https 服务器。
该证书的组设置为libretodoapi
(我为运行 node.js 应用程序而创建的用户/组)。权限 640 应允许对该文件进行读取访问:
root@nijin:/# ls -l /etc/letsencrypt/archive/api.libretodo.org/privkey1.pem
-rw-r----- 1 root libretodoapi 1704 Jan 11 23:11 /etc/letsencrypt/archive/api.libretodo.org/privkey1.pem
也就是说,尝试访问该文件libretodoapi
失败:
root@nijin:/# sudo -u libretodoapi cat /etc/letsencrypt/archive/api.libretodo.org/privkey1.pem
cat: /etc/letsencrypt/archive/api.libretodo.org/privkey1.pem: Permission denied
前面的文件夹都属于根目录:
root@nijin:~# namei -lo /etc/letsencrypt/archive/api.libretodo.org/privkey1.pem
f: /etc/letsencrypt/archive/api.libretodo.org/privkey1.pem
drwxr-xr-x root root /
drwxr-xr-x root root etc
drwxr-xr-x root root letsencrypt
drwx------ root root archive
drwxr-xr-x root root api.libretodo.org
-rw-r----- root libretodoapi privkey1.pem
我不相信某个地方有错误。更确切地说,我认为我不了解可以解释这种行为的 unix 权限。你知道我错过了什么吗?
答案1
层次结构中的所有目录(从根 ( /
) 到文件的父目录)都必须具有x
用户/组的权限,以便他们能够访问该文件。
目录的执行权限使用户能够访问该目录,而读取权限使用户能够列出其内容。