我写了一个像这样的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密码,第二个命令不运行并给我一个权限被拒绝错误。
我该如何处理这种情况?
答案 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