所以我知道我可以运行
$ sudo script
以root用户身份运行脚本。
在这个脚本中,我需要以root身份运行一些命令来删除某些目录,但我不能以root身份运行其他命令(如果以root身份运行则会抛出错误的bower命令)
现在我有一个使用sudo -u来逃避root的工作脚本,但它真的很糟糕:
sudo rm -rf ./node_modules ./bower_components
sudo npm cache clean
sudo npm install
sudo -u user bower cache clean
sudo -u user bower install
有更简洁的方法吗?
编辑以回应@Etan Reisner的评论
如果我将脚本更改为
sudo rm -rf ./node_modules ./bower_components
sudo npm cache clean
sudo npm install
bower cache clean
bower install
然后运行没有sudo的脚本它失败并出现错误
bower ESUDO Cannot be run with sudo
我不明白为什么但是在脚本中有任何sudo命令似乎以root身份运行bower命令。
答案 0 :(得分:1)
不要使用sudo
运行脚本。使用sudo
运行您需要为root用户的命令行,然后运行您希望成为其他用户的行,而不预先sudo
。
更好的是,将需要root的行放入第二个“外部”脚本,并使用您作为非root用户运行的“内部”脚本中的sudo
调用该脚本。并确保该脚本中的无不需要以root身份运行。
你甚至可能想要检查你在“外部”或“调用”脚本的开头是不是root用户,并且你是“内部”或“被调用”的开头的根。如果这些条件失败,请吐出错误消息并返回错误代码。