对另一个域用户执行 sudo 时的特权

JHH*_*JHH 5 linux kerberos authentication sudo upstart

假设我有一个mydomain使用 MS Active Directory的公司域。在域中,我有用户myuseryouruser. 现在,在一台特定的 Ubuntu 机器上mymachine, myuser 具有 sudo 权限,并且执行sudo su youruser(或sudo -u youruser sh)。由于 myuser 具有必要的 sudoers 配置,因此他不需要输入您用户的密码,并且将有效地成为机器上的您的用户。

  1. 此时会有什么样的youruser特权myuser?显然,如果机器上youruser也有一个主目录,myuser现在可以访问它并读取他的私有本地文件。但是如果尝试使用 kerberos、samba 等访问网络域资源会发生什么?我猜因为他从来没有输入过youruser密码,所以他没有作为域用户进行身份验证,没有 kerberos 票等。所以如果有一个网络服务来检查他的用户 ID 的组成员身份,那也会失败吗?这是如何运作的?他是否被视为不同的用户,例如,mymachine\\yourusermydomain\\youruser?

  2. 假设有一个 web 服务作为机器上的守护程序运行,使用专用域用户myserviceuser。如果此 Web 服务需要访问网络资源,即使用 Kerberos 进行身份验证,那么应该如何设置守护程序,例如从新贵脚本中设置?通常您使用类似的东西启动它sudo -u myserviceuser <cmd>,但鉴于上述假设,这是否会授予 Web 服务访问网络资源的任何权限?该用户的密码不应该在某处输入吗?

And*_*ndy 2

在我看来,关于这些东西还没有足够清晰的文档。

  1. 你是对的 - 如果服务受 kerberos 保护,那么 su/sudo 不足以绕过必要的授权(除非目标用户因为当前已登录而拥有缓存的票证或密钥表)。大多数资源(例如本地文件系统)依赖 uidnumber 和 gidnumber 来识别用户,并且可以通过 root/sudo 访问绕过

  2. 这是我目前在工作中处理的一件有趣的事情。假设服务帐户apache需要访问基于 Kerberos 的 NFS 共享。您需要将apache的密钥表导出到本地文件系统并获取该密钥表,当服务启动时,可能会通过 cron 定期更新其票证。RHEL7 有 gssproxy,它似乎简化了这一点,但我还没有达到这一点。

密钥表实际上是保存的凭证。如果有人可以访问它,他们就可以伪装成该用户。在 IPA 和 AD 中导出新的密钥表会更改帐户的密码。

Microsoft kerberos 略有不同,但大多数规则仍然适用。