错误总是看起来像这样,取决于在哪个 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 目录。