SUID 意外从 /bin/su 文件中删除

Adi*_*kar 5 linux root permissions su sudo

它是一个生产服务器 - CentOS 6.1

一些过去拥有 root 访问权限的用户登录到服务器并从 /bin/su 文件中删除 SUID 位,然后退出 root。现在我们无法切换回 root。此外,服务器上禁用了 root 的 ssh 访问,因此 root 无法直接登录到机器。由于我们既不能 su 到 root 也不能​​ ssh 为 root,我们不能为 /bin/su 文件设置回 suid 位。(我们也不能使用 su 在用户之间切换)

本来应该是这样的:

$ ll /bin/su
-rwsr-xr-x. 1 root root 30092 Mar 10  2011 /bin/su
Run Code Online (Sandbox Code Playgroud)

现在的情况:

$ ll /bin/su
-rwxr-xr-x. 1 root root 30092 Mar 10  2011 /bin/su
Run Code Online (Sandbox Code Playgroud)

有什么办法可以切换回 root 或以任何方式设置 SUID 位?

注意:我们希望避免在无网络用户模式下重新启动,因为服务器 24x7 都在使用,并且停机有点困难。如果可以重新启动,那么我们可以简单地使用单用户模式以 root 身份登录并重置该位。

随意给出有创意的答案。我可以在我们的测试环境中测试您的答案。

Fra*_*iat 3

一些选项:

  • sudo -i,这是最明显的选择。
  • sudo -l然后寻找一个允许您使用的命令来解决问题,例如:编辑由 root 执行的文件,例如 crontab、logrotate、executon yum/rpm...
  • 转到控制台,并以 root 身份连接(如果我理解的话,只有 ssh 受到限制)
  • 打开图形会话,某些发行版具有不依赖 sudo 的 root 工具。另外,他们中的许多人都有一些更新管理器..也许您可以重新安装提供的软件包su
  • 如果你有像puppet/chef/ansible/fai这样的配置管理工具...推送配置!
  • 检查您的 crontab 以查看是否可以编辑文件以升级。
  • 如果您的服务器连接到中央身份验证系统(尤其是LDAP/nis),请创建一个具有高权限的帐户(组轮,或用户uid = 0)。
  • 如果它是虚拟服务器,请将其关闭,然后挂载并编辑文件系统。

一些银弹:

  • 以单用户模式(red hat)重新启动服务器或指定init=/bin/sh(Debian 和 rhel/CentOS 7),然后修复权限。
  • 在 CD/DVD/USB/NetBoot 中重新启动服务器并使用恢复(或仅安装和编辑)

还有一些真的很难看:

  • 找到您系统中的漏洞来危害它!

如果您的系统管理员做得很好,普通用户就无法做任何这些事情(但您是系统管理员)