我,作为普通用户(不是 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
,我应该用什么来替换???
上面的?
您至少需要对目录
a/
、a/b/
和的“执行”权限,以及对目录a/b/c/
的“写入”权限a/b/c/d/
。执行权限允许您遍历目录以到达下一个目录,您不需要对中间目录的实际写入权限。您可以使用 chmod 的递归选项来授予执行权限:请记住,此命令将影响 中的所有文件和所有目录
a/
,而不仅仅是您提到的目录。例如假设用户 p1 想要在 /a/b/c/d/ 中创建一个文件
只有所有者和组具有读、写和执行权限,但用户 p1 不在组列表和所有者中。
那时您有 2 个选项可以更改其他权限,如下所示
chmod o+rwx /path_whereyou_want_to_create_file/ 意味着所有用户都将拥有 rwx 权限,因此他们将能够创建文件。
但为了更安全,您可以像下面这样获得权限,因此它只会向特定用户和路径授予读取、写入、执行权限
setfacl -mu:p1:rwx /path_whereyou_want_to_create_file/