在bash脚本中使用sudo的最佳实践
我有一个运行时间很长的bash脚本,其中一些命令需要以root身份运行,而大多数命令需要在sudo之前以常规用户身份运行,因为这会破坏文件所有权等。 我想出了一些方法,但是每个方法都有一些问题 方法1:在文件内部使用sudo #!/bin/bash sudo echo "I must be run by root" touch needsToBeOwnedByUser1 echo "needs to be run by user" sleep 1000 sudo echo "I, again, must be run by root" 从编写代码的方式来看,这看起来不错。sudo是在实际上需要由root用户运行的少数语句之前编写的,但是如果每次sudo调用之间的时间太长,则sudo再次要求输入密码。同样,如果第一次执行sudo失败(例如,由于密码无效),则脚本的其余部分仍将执行。 方法2:使用sudo调用文件,然后在需要时更改回原始用户 #!/bin/bash echo "I must be run by root" su username -c 'touch needsToBeOwnedByUser1' su username -c …