UNIX / Linux shell脚本是否可以“退出”并注销当前用户?

时间:2011-08-15 04:34:34

标签: unix shell scripting aix

我们在这里遇到一个奇怪的问题。不幸的是,我不能自由地在这里发布代码,因为它属于供应商,但希望能够提供足够的信息,这是不必要的。

如果有人可以明确地说'bob'是否有可能执行“some_script.sh”,并且让它退出他的su'd会话MID-WAY并且剩余的脚本继续作为用户'pete'(谁最初冒充'bob')

我很确定这是不可能的,但有没有人知道不是吗?

要记住的事情:

  1. scriptA.sh执行多个其他进程(串行),这些进程对数据库进行更改
    • 假设这些是01.sql到10.sql。
    • 通过使用适当的参数执行'sqlplus'来实现此目的。
  2. 'sqlplus'二进制文件可供用户'bob'使用,但不是用户'pete'。
  3. 用户皮特目前被用户'bob',因为皮特在他的路径上没有sqlplus。
  4. 我们在脚本/数据库中看到的输出表明'01 .sql'已成功执行,但未成功执行 - 他们因找不到'sqlplus命令'而失败。
  5. 干杯,

2 个答案:

答案 0 :(得分:2)

根据您提供的信息,“不可能。”

如果用户'pete'su为'bob',他会创建一个新的shell作为'bob'。从新she​​ll开始的任何进程都以'bob'运行。任何脚本(如果以'bob'运行)都不能将其用户/ UID更改为'pete'。任何以'bob'开头的进程都无法更改其用户/ UID(可执行文件中没有setuid位)。

脚本的一部分更有可能是修改shell环境并更改其PATH或脚本中的其他错误。

答案 1 :(得分:1)

使用脚本尝试切换UID注定要失败。需要共享登录的权限系统 - 根据定义 - 不安全。

按照预期的方式使用AIX权限系统。如果你需要bob的凭证来执行任务,那么就拥有一个Sandipan可以执行的程序,该程序将提升为仅需要bob凭据的bob权限。

这是Principle of Least Privilege,是如何处理这项工作的。共享密码是一个糟糕的黑客,会鼓励更糟糕的黑客攻击。