在 shell 脚本中使用 su 放弃 root 权限是否存在安全风险?

在 shell 脚本中使用 su 放弃 root 权限是否存在安全风险?

在搜索如何在 shell 脚本中放弃 root 权限时,我经常看到使用 的答案su。但是,使用完成后,su您只需键入logout并返回原始用户的 shell。我有一个以 root 身份运行的 bash 脚本,我在最后执行以下操作:

exec su -c "external_com" - muser

这将产生以下进程树:

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
    1 root       20   0 37352  2500  2192 S  0.0  0.0  0:00.02 su -c external_com
    5 muser      20   0 85548  6292  5156 S  0.0  0.0  0:00.47 └─ external_com
   13 muser      20   0 85548  6292  5156 S  0.0  0.0  0:00.35    ├─ external_com
   12 muser      20   0 85548  6292  5156 S  0.0  0.0  0:00.02    ├─ external_com

我无法控制external_com,它不会在内部调用 setuid。它提供了一个向全世界公开的 Web 界面。如果有人不知何故通过 Web 界面中的安全漏洞获取控制台,他们可以直接调用logout并成为 root 用户吗?

编辑:如果我没看错的话,更好的方法是直接运行脚本muser并允许musersudo 执行它需要的几个命令。不过,我仍然希望得到这个问题的答案,因为这是值得了解的宝贵信息 :)

答案1

不,这并不是什么值得担心的事情。

如果有人由于 external_com 中的安全漏洞而获得了 shell,那么他们所能做的就是以 muser 身份运行命令。如果他们退出该 shell(使用 logout),那么该 shell 进程就结束了;他们不会以 root 身份返回。当 external_com 结束时,启动它的进程/脚本将退出(因为您执行了“exec”操作)

相关内容