![sudo:从另一个脚本启动的脚本不会重定向标准输出](https://linux22.com/image/27178/sudo%EF%BC%9A%E4%BB%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%E5%90%AF%E5%8A%A8%E7%9A%84%E8%84%9A%E6%9C%AC%E4%B8%8D%E4%BC%9A%E9%87%8D%E5%AE%9A%E5%90%91%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA.png)
我正在使用带有 sudo 1.6.9p23 的 AIX 5.3。 Sudoers 文件授予用户fcomartin
以用户身份运行任何命令的权限oas
:
fcomarti ALL=(oas) ALL
用户oas
有一个名为 menu 的 bash 脚本,它根据所选选项启动其他脚本。
问题是某些辅助脚本将标准输出重定向到用户temp
拥有的文本文件oas
。发生这种情况时,系统告诉我用户没有正确的写入权限。
用户fcomarti
使用ksh,使用的命令如下:
sudo -u oas bash menu
(bash 因为用户oas
使用 bash)。
菜单启动,然后菜单启动 monitorAv 脚本。在monitorAv里面是一行echo > temp
;然后它会错误说用户fcomarti
没有正确的写入权限。
我该如何解决这个问题?
答案1
编辑该脚本,不要运行sudo something > here
,像这样使用它sudo sh -c "something > here"
man
redirection
可能非常有用,在 中搜索man sudo
。
答案2
我终于解决了这个问题,sudo的语法如下:
sudo -u oas bash -c "cd /Oas/bin; menu"
这是因为一些由菜单启动的辅助脚本需要绝对路径才能工作。