【发布时间】:2013-07-29 08:35:46
【问题描述】:
我有一个如下所示的 shell 脚本。
#!/bin/bash
sudo -u testuser -H sh -c "
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
"
我已授予用户 testuser 使用 sudo 执行 shell 脚本的权限,但无需询问密码。为此,我在 /etc/sudoers 文件中添加以下行,
testuser ALL=(ALL) NOPASSWD: ALL
而且效果很好,我可以使用 sudo 运行命令,但无需询问密码。但是上面的shell脚本总是给出put ass,
mkdir: cannot create directory `/usr/local/testdir': Permission denied
Successfull
它并没有在/usr/local 内创建目录testdir。请告诉我我需要做哪些修改才能使这个脚本正常工作。
谢谢。
【问题讨论】:
-
好的,据我所知,这与 sudo 无关。只是用户无权创建目录。你熟悉 unix 文件权限吗?
-
但是,我可以使用命令
sudo mkdir /usr/local/testdir在该位置创建目录,即无需提示密码! -
请注意,您应该限制
NOPASSWDsudo 仅访问单个脚本,否则任何访问该用户帐户的人基本上都会成为 root... -
这个问题说明了
sudo make-me-a-sandwich与sudo -u honey make-me-a-sandwich之间的区别;前者永远成功;后者可能会也可能不会。