假设我有一个使用MS Active Directory的公司域mydomain 。 在域中,我有用户myuser和youruser 。 现在,在一台特定的Ubuntu机器mymachine ,myuser具有sudo权限,并且sudo su youruser (或者sudo -u youruser sh )。 由于myuser具有必要的sudoersconfiguration,所以他不需要input用户的密码,并且将有效地成为该机器上的用户。
myuser目前拥有什么样的youruser权限? 显然,如果你的youruser在机器上也有一个主目录, myuser现在可以访问它并阅读他的私有本地文件。 但是,如果尝试访问使用kerberos,samba等networking域资源会发生什么? 我想因为他从来没有进入你的youruser的密码,他没有authentication为域用户,没有Kerberos票等。所以如果有一个networking服务,检查组成员身份为他的用户ID,这也会失败? 这个怎么用? 他被认为是不同的用户,比如mymachine\\youruser ,而不是mydomain\\youruser ?
假设有一个Web服务作为机器上的守护进程运行,使用专用的域用户myserviceuser 。 如果此Web服务需要访问networking资源(即使用Kerberos进行身份validation),则应该如何设置守护进程(例如,从一个暴发户脚本)? 通常你用sudo -u myserviceuser <cmd>来启动它,但是根据上面的假设,这会授予Web服务访问networking资源的权限吗? 不应该input这个用户的密码吗?
关于这个东西IMO没有足够的清晰的文件。
你是对的 – 如果一个服务受kerberos保护,那么su / sudo不足以绕过必要的授权(除非目标用户有caching票据,因为它们当前已经login,或者是一个keytab)。 大多数资源(例如本地文件系统)依赖uidnumber和gidnumber来标识用户,并且可以被root / sudo访问绕过
这是一个有趣的,我目前在工作中处理。 说一个服务帐户apache需要访问一个kerberised的NFS共享。 您需要将apache的keytab导出到本地文件系统,并在服务启动时通过cron定期更新其票证。 RHEL7有gssproxy,这似乎简化了这一点,但我还没有到那一点呢。
密钥表是有效的保存的凭据。 如果有人可以访问它,他们可以伪装成该用户。 在IPA和AD中导出新的密钥表将更改帐户的密码。
微软kerberos略有不同,但大多数规则仍然适用。