运行“ls”的权限被拒绝

1 permissions command-line-interface

我以 root 用户身份运行我的服务器,但尽管如此,当我运行命令时,ls我收到此错误:

bash: /bin/ls: Permission Denied.
Run Code Online (Sandbox Code Playgroud)

我试图更改此文件的权限,chmod但权限也被拒绝。这是什么原因?

Ave*_*yne 5

这有几个潜在的原因。

  1. 文件系统已挂载 noexec
  2. 需要使用 fsck 修复的文件系统损坏。
  3. 文件系统是外来的,权限转换不当会导致权限被拒绝。
  4. 保存二进制文件的目录没有设置执行位(导致遍历问题)
  5. 目录中的子目录没有设置执行位(仅适用于二进制文件嵌套在多个目录中的情况)
  6. 二进制文件没有为您的用户 ID 或组 ID 设置读取和执行位。
  7. 即使帐户名称显示为root. 虽然不太可能,但这是可能的。请注意,root它与 UID 0 并非 100% 相同,这是一个绕过权限检查的“特殊”ID。 但是,root帐户映射到 UID 0。
  8. SELinux/grsecurity 规则拒绝一切。(感谢 Janne Pikkarainen!对这种烦恼有点精神障碍。)
  9. 一个或多个二进制文件遭到破坏。在这种情况下,你不能相信你正在运行的任何东西。

需要更多信息才能真正了解正在发生的事情。

  • 您能否详细说明为什么只读文件系统会导致该错误(我认为这是完全错误的,因为我已经运行了几个仅具有 RO 挂载分区的系统,并且一切都按预期工作-我认为您想编写` noexec` 而不是 `read-only`) (2认同)