Sudo将破坏导入我的脚本

时间:2014-07-01 11:53:15

标签: linux shell centos sudo

我有一个shell脚本(my.sh),它导入另一个文件(myfile.env)。 myfile.env的名称作为参数传递给my.sh.它作为root运行良好,我希望能够通过sudo为其他用户运行它。

myfile.env

some shell scripts........

my.sh

ENVFILE="$1"
if [ -e $ENVFILE ] ; then
    . $ENVFILE
fi 

我将my.sh称为

sudo /abc/def/my.sh myfile.sh

sudoers文件如下

Cmnd_Alias MYSUDO = /abc/def/my.sh, /bin/bash
%mygroup ALL = MUSUDO

不幸的是,这导致上面的my.sh代码中的第3行出错。它说

.: myfile.env: cannot open [No such file or directory]

有趣的是,我在检查文件后返回true时收到此错误。

sudo -s和-E选项没有帮助(不知道我是否正确使用它们)

有人可以帮我解决这个问题吗?我正在使用CeNT OS 6.5

2 个答案:

答案 0 :(得分:0)

使用sudo /abc/def/my.sh /absolute/path/to/myfile.env

如果myfile.sh应该和my.sh在同一个目录中,那么my.sh可以这样做:

ENVFILE=$(dirname "$0")/"$1"

答案 1 :(得分:0)

最后我能够完成它。它是在sudoer文件中设置将目录(包含这些文件的文件夹)放入安全路径列表中。

我所要做的只是,

run visudo

并将两个玩家(文件所在的位置)附加到

Defaults secure_path  list

当用户获得提升权限时,这会将这些目录添加到PATH中。

https://askubuntu.com/questions/128413/setting-the-path-so-it-applies-to-all-users-including-root-sudo