使用 su 切换到非 root 用户时,su 无法启动该用户的 shell 程序,尽管看似对所有权限都很好

使用 su 切换到非 root 用户时,su 无法启动该用户的 shell 程序,尽管看似对所有权限都很好

错误总是看起来像这样,取决于在哪个 shell 中配置/etc/passwd

su: failed to execute /usr/sbin/jk_chrootsh: Permission denied

或者

su: failed to execute /bin/bash: Permission denied # for a more typical shell

检查位于的权限和文件访问控制列表后/bin/bash/usr/bin/bash它们似乎允许用户backups读取和执行这两个 shell。

┌─[✓]─[\u@\h]─[~]
└──$ stat --format %a /usr/sbin/jk_chrootsh # Get chmod code
777

┌─[✓]─[\u@\h]─[~]
└──$ stat --format %a /usr/bin/bash
755

┌─[✓]─[\u@\h]─[~]
└──$ getfacl /usr/sbin/jk_chrootsh
getfacl: Removing leading '/' from absolute path names
# file: usr/sbin/jk_chrootsh
# owner: root
# group: root
user::rwx
group::rwx
other::rwx

┌─[✓]─[\u@\h]─[~]
└──$ getfacl /usr/bin/bash
getfacl: Removing leading '/' from absolute path names
# file: usr/bin/bash
# owner: root
# group: root
user::rwx
user:backups:rwx  #effective:r-x
group::r-x
mask::r-x
other::r-x

chmod 代码777for/bin/bash会明确允许任何人具有 rwx 访问权限,并且文件访问控制列表甚至显示了我的用户具有 rwx 访问权限的特定覆盖。

chmod 代码755还应为 提供足够的访问权限jk_chrootsh,其中 rx 访问权限被授予所有人。此外,facl未显示任何会限制 执行能力的内容任何人到 /usr/sbin/jk_chrootsh。

我担心这个sbin目录可能阻止了读取权限,因为它通常只供 root 用户使用,但它也允许任何人读取和执行。我猜它只是不在非 root 用户的默认 PATH 变量中。

如果需要的话,这backups也是 /etc/passwd 中的用户行:

backups:x:1002:1002:,,,:/opt/backups/./.:/usr/sbin/jk_chrootsh

有人有解决这个问题的可能线索吗?

编辑:

根据 的harrymc请求,/opt/backups/具有权限代码777,但由 拥有root:root,因为 sshd 需要 root 来拥有 chroot 目录。

相关内容