在shell脚本中运行sudo命令

时间:2017-06-28 13:58:31

标签: linux bash shell

我写了一个像这样的shell脚本

#!/bin/bash

sudo mkdir /var/www/html/test
sudo cp ./index.html /var/www/html/test/index.html
echo "Hi" > /var/www/html/test/index.html

如果我用sudo来判断它,那么效果很好。

$ sudo ./script.sh

但我不想与sudo一起运行。因为echo不需要root权限。另一方面,如果我没有sudo这样运行:

$ ./script.sh

对于第一个命令(mkdir),它要求我输入root密码,第二个命令不运行并给我一个权限被拒绝错误。

我该如何处理这种情况?

2 个答案:

答案 0 :(得分:0)

根据您的设置,例如在ubuntu,如果我运行sudo 2次,第二次我不必提供密码。因此,第二个sudo DID可能会运行,而无需再次请求密码。

你可以澄清一下,试试这个:

sudo echo a
sudo echo b

最有可能的是,正如Kip K评论的那样,错误源于回声"嗨" ...因为普通用户没有写入/ var / www / html / test / index的权限。 html。

有点矫枉过正,但你可以给出这样的持续反馈:

sudo bash -c 'echo mkdir; mkdir /var/www/html/test'
sudo bash -c 'echo cp; cp ./index.html /var/www/html/test/index.html'

答案 1 :(得分:0)

对目录chown尝试test

#!/bin/bash

sudo bash -c 'mkdir /var/www/html/test && chown -R USER /var/www/html/test'
cp ./index.html /var/www/html/test/index.html
echo "Hi" > /var/www/html/test/index.html

... chmod o+w /var/www/html/test