Kubernetes/OpenShift中的allowPrivilegeEscalation=true和RequiredDropCapabilities=SETUID

Kubernetes/OpenShift中的allowPrivilegeEscalation=true和RequiredDropCapabilities=SETUID,kubernetes,openshift,okd,Kubernetes,Openshift,Okd,我已经在这里阅读了这些描述: 我仍然很困惑这些设置是否相同但相反?例如,在OpenShift的restrictedSCC中,我们将SETUID作为RequiredDropCapabilities之一。同时,在同一个SCC中,我们有allowPrivilegeEscalation=true 一个不允许在其他用户下启动流程,但另一个允许吗 这是我在allowPrivilegeEscalation=true上读到的: 这默认为allowed,以便不破坏setuid二进制文件 对于SETUID: se

我已经在这里阅读了这些描述:

我仍然很困惑这些设置是否相同但相反?例如,在OpenShift的
restricted
SCC中,我们将
SETUID
作为
RequiredDropCapabilities
之一。同时,在同一个SCC中,我们有
allowPrivilegeEscalation
=true

一个不允许在其他用户下启动流程,但另一个允许吗

这是我在
allowPrivilegeEscalation
=true上读到的:

这默认为allowed,以便不破坏setuid二进制文件

对于SETUID:

setuid()设置调用进程的有效用户ID

(来自)


有人能给我解释一下吗?

setuid二进制文件是一个文件权限中有4000位标志的文件。虽然我们通常只讨论使用三个八进制数字(744或600等)的Unix文件权限,但下一个位通常用于suid、sgid和sticky。suid可执行文件会自动设置uid()'d为文件所有者的ID。这就是像sudo这样的工具的工作原理,它需要提升权限,但由非特权用户运行。

谢谢。所以,即使我不能在root(droplegability)下运行进程,我仍然可以通过运行一个由root拥有并设置了setuid(即allowPrivilegeEscalation)的可执行文件来获得root的特权?