【问题标题】:sudo: script launched from another script won't redirect standard outputsudo:从另一个脚本启动的脚本不会重定向标准输出
【发布时间】:2012-11-14 18:06:31
【问题描述】:

我正在使用 AIX 5.3 和 sudo 1.6.9p23。 sudoers 文件授予用户 fcomartin 以 oas 用户身份运行任何命令的权限:

fcomarti ALL=(oas) ALL 

用户 oas 有一个名为 menu 的 bash 脚本,它会根据所选选项从该脚本启动另一个脚本。问题是一些辅助脚本将标准输出重定向到 oas 用户拥有的文本文件“temp”,当这种情况发生时,系统告诉我用户没有正确的写入权限。

用户fcomarti使用ksh,那么使用的命令如下:

sudo -u oas bash menu

(bash 因为用户 oas 使用 bash)菜单启动,菜单启动 monitorAv 脚本,在 monitorAv 内是 echo > temp 行,然后它告诉用户 fcomarti 它没有正确的写入权限。

【问题讨论】:

    标签: stdout sudo


    【解决方案1】:

    脚本以oas 用户身份运行,而不是以fcomarti 用户身份运行,因此如果它试图写入fcomarti 拥有的目录中的文件,它可能没有适当的权限。

    您可以让用户oas 与用户fcomarti 共享一个组,然后授予组对某些目录的写入权限,或者您可以将脚本输出到oas 用户可写入的位置(例如, /tmp,或您为此目的明确创建的某个目录,例如用户 oasHOME 目录。

    【讨论】:

    • 谢谢你的回答,实际上文本文件“temp”在用户oas拥有的文件夹中,好像menu启动的二级脚本不会继承用户oas,所以指令回显> temp 无法写入。
    • 你确定吗? sudo 没有魔法;一旦您开始以oas 用户身份运行,所有后续命令都将以该用户身份运行(无需再次调用sudosu 或其他一些特权工具)。在尝试生成输出文件或使用显式路径而不是相对路径输出时,我会仔细检查您的当前目录。
    【解决方案2】:

    我终于解决了这个问题,sudo的sintaxis如下:

    sudo -u oas bash -c "cd /Oas/bin; menu"
    

    这是因为菜单启动的一些二级脚本,需要绝对路径才能工作。

    【讨论】:

      猜你喜欢
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 2022-08-22
      • 2017-02-11
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      相关资源
      最近更新 更多