在目录中创建文件时对目录的正确权限是什么

在目录中创建文件时对目录的正确权限是什么

我作为普通用户(不是 root),尝试在目录中创建一个文件,如下所示:

touch a/b/c/d/test.log

但是我收到错误:权限被拒绝。

我知道我应该chmod为该目录设置权限,但我不知道正确的权限是什么,因为我不想将其设为 777。
另外,我应该chmod为每个目录设置如下:

sudo chmod ??? a
cd a
sudo chmod ??? b
cd b
sudo chmod ??? c
...

或者我应该简单地这样做:

sudo chmod ??? a/b/c/d

如果我创建后需要读写test.log,我应该用什么来替换???上面的呢?

答案1

您至少需要对目录a/a/b/和具有“执行”权限a/b/c/,并对目录 具有“写入”权限a/b/c/d/。执行权限允许您遍历目录以到达下一个目录,您不需要中间目录的实际写入权限。您可以使用 chmod 的递归选项来授予执行权限:

sudo chmod -R +x a

请记住,此命令将影响 中的所有文件和所有目录a/,而不仅仅是您提到的目录。

答案2

例如假设用户 p1 想要在 /a/b/c/d/ 中创建一个文件

只有所有者和组具有读、写和执行权限,但用户 p1 不在组列表和所有者中。

此时您有 2 个选项更改其他权限,如下所示

chmod o+rwx /path_whereyou_want_to_create_file/ 意味着所有用户都将拥有 rwx 权限,以便他们能够创建文件。

但为了更安全,您可以像下面这样 acl 权限,这样它只会向特定用户和路径授予读、写、执行权限

setfacl -mu:p1:rwx /path_whereyou_want_to_create_file/

相关内容