我有一个脚本,除其他外,需要以 root 身份执行一些操作,例如创建安装文件夹。我试过:
echo "Linux user password is needed in order to ..."
sudo -s
# also tried:
# sudo su
... code that requires root permission
exit
... code that requires user permission
问题是脚本在“sudo -s”之后停止,并且仅在我手动退出自动创建的 root shell 后继续。
有没有办法在用户脚本中运行 root shell 命令?
谢谢。
答案1
是的,因为像这样的事情
sudo mkdir /mnt/mymountpoint
工作,你可以做
sudo ./myrootscript.sh
如果您检查合适的参数,您的脚本甚至可以再次调用自身,因此您只有一个文件。
答案2
您只是以错误的方式使用sudo
两者。su
如果您只编写sudo -s
或sudo su
单独编写,您最终将得到一个从脚本内部创建的交互式 shell -这就是那些命令做。
既然你需要一段 shell 代码要以 root 身份执行,您需要以某种方式将其包装到单个命令中。也许最简单的方法是使用显式子 shell:
echo "Linux user password is needed in order to ..."
sudo sh -c '
... code that requires root permission
'
当您尝试使用脚本中其他地方定义的某些变量时,这当然会引起麻烦 - 在这种情况下,请使用双引号而不是单引号。
但如果您只有几个命令需要以 root 身份运行,最好sudo
在每个命令前面使用。