我作为普通用户(不是 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/