权限被拒绝:cd 进入目录

权限被拒绝:cd 进入目录

我正在使用 Chromebook,并且想通过 shell 在 Android 容器内导航。容器安装在路径上/run/containers/android_XXXXX。当尝试cd进入目录时,我被告知Permission Denied。我尝试将命令运行为sudo,但由于某种原因该cd命令变得无法访问。我已经运行chmod u+x了目录,但没有骰子。

从这里我可以采取什么步骤?

stat我已经在目录上运行,它返回以下内容:

  File: ‘android_XXXXXX/’
  Size: 80              Blocks: 0          IO Block: 4096   directory
Device: fh/15d  Inode: 59640       Links: 3
Access: (0700/drwx------)  Uid: (655360/ UNKNOWN)   Gid: (655360/ UNKNOWN)
Context: u:object_r:tmpfs:s0
Access: 2016-10-31 04:04:52.680000040 +0000
Modify: 2016-10-31 04:04:52.200000040 +0000
Change: 2016-10-31 04:44:54.990001186 +0000
 Birth: -

答案1

该目录drwx------只有 uid 为655350(未在密码文件中列出)的人才能读取或进入它。

sudo cd无法找到该cd命令是预料之中的,它是 shell 的内置命令。如果它不是内置的,那么它就无法工作。假设你当前的 shell 的进程 ID 为 54000,你运行 /bin/cd 命令,它的 PID 可能是 54309。它会更改进程 54309 的目录,然后退出。进程 54000 仍位于其原始目录中。

chmod u+x改变user (owner)许可。

你想要的是sudo chmod go+rx /run/containers/android_XXXXX

答案2

除了像 @icarus 提到的那样检查权限之外,您还需要检查 ACL(访问控制列表),以getfacl确保没有任何规则覆盖基本文件访问权限。

注意:如果getfacl您的系统上不存在,则可能不是问题所在。


示例 ACL 应该不是问题。

$ getfacl test/
# file: test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

这表明除了标准 POSIX 访问规则之外,没有应用其他 ACL 规则。您可以看到它ls -ald在权限方面与的输出匹配。 ( 的-d参数ls告诉它向您显示目录本身,而不是其内容。)

$ ls -ald test/
drwxr-xr-x 2 root root 4096 May  8 19:11 test/

可能给您带来问题的 ACL 示例。

$ getfacl test/
# file: test/
# owner: root
# group: root
user::rwx
user:mc:r--
group::r-x
mask::r-x
other::r-x
$ ls -ald test/
drwxr-xr-x+ 2 root root 4096 May  8 19:11 test/

在这种情况下,查看 的输出ls -ald,您不会认为会有问题。但是,由于 ACL 规则适用于 POSIX 规则,因此用户mc将无法更改到该目录,因为他缺乏可执行权限,尽管其他权限集本来会将其授予mc.

但需要注意的是,所有者权限似乎优先于所有其他 ACL 规则,我相信组所有者权限也是如此。

Arch Wiki 有有关 ACL 的更多信息。查看https://wiki.archlinux.org/title/Access_Control_Lists如果您有兴趣了解更多有关它们的信息。


可以理解的是,您可能不想总是检查getfacl这是否是您的问题,或者您可能会忘记这样做。幸运的是,ls -al它会告诉您何时应用其他 ACL 规则。如果您查看 的输出ls -al,只要应用了 ACL 规则,您就可以+在权限位列表的末尾看到 a,否则不会显示(至少在我的简短测试中是这样) 。

+TLDR:如果您在 的权限列表中看到ls -al,请检查访问控制列表 ( getfacl)。

相关内容