我有一个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
答案 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中。