我有一个仅限 ssh 的用户帐户,名为pgbackrest
禁用密码。我以 root ( ) 身份创建了一个目录 /etc/pgbackrest/ sudo mkdir -p /etc/pgbackrest
。然后我在上述目录下创建一个配置文件,并将所有权更改为该帐户pgbackrest
,sudo chmod 640 /etc/pgbackrest/pgbackrest.conf
当我尝试使用以下命令编辑它时
- 切换到
pgbackrest
用户sudo su - pgbackrest
,vim /etc/pgbackrest/pgbackrest.conf
进入/etc/pgbackrest/pgbackrest.conf" [Permission Denied]
vim编辑器。 sudo -u pgbackrest vim /etc/pgbackrest/pgbackrest.conf
,我进入/etc/pgbackrest/pgbackrest.conf" [Permission Denied]
vim编辑器。
上级目录的权限是否禁止编辑?640 表示所有者和组成员可以读取、写入。我以所有者身份访问文件,为什么会出现访问被拒绝的情况?
答案1
为了使用户能够访问文件,他们还需要对该文件的路径中的所有目录的权限。
他们至少需要x
目录的权限。
就你而言(来自评论)你有
drwxr-x--- 3 root root 4096 Aug 10 22:56 pgbackrest
以及文件本身:
-rw-r----- 1 pgbackrest pgbackrest 0 Aug 10 01:12 pgbackrest.conf
这意味着pgbackrest
用户无法访问该文件来读取它。
一个简单的解决方案是添加x
权限:
chmod a+x /etc/pgbackrest
现在任何知道该目录中文件名的人都可以尝试访问该文件,但文件权限也生效。因此,只有pgbackrest
用户或pgbackrest
组中的任何人才能打开该文件;其他人都会被阻止。