如何在bash脚本中切换/更改用户ID以在同一脚本中执行命令?


14

有没有一种方法可以在脚本内切换用户身份(在安装过程中作为根用户执行),以执行某些命令而无需调用外部脚本,然后返回root运行其他命令?

有点:

#!/bin/bash
some commands as root
SWITCH_USER_TO user
some commands as user including environment variables checks, without calling an external script
SWITCH_USER_BACK
some other stuff as root, maybe another user id change...


您应该看看这个答案stackoverflow.com/a/17758312/1243547
Klaus

Answers:


28

否。但是您可以sudo用来运行外壳程序并使用heredoc向其提供命令。

#!/bin/bash
whoami
sudo -u someuser bash << EOF
echo "In"
whoami
EOF
echo "Out"
whoami

如果将所有内容都放到同一脚本中,这肯定可以完成工作,并且如果在EOF之后的
每一行都用右

这个答案比这个重复题中的所有答案都要好。
Dan Dascalescu 2014年

1
我几乎想知道,如果要这样做,我不会使用EOF,而是将Heredoc的名称更改为SUDO。这样,我会记得我在包含的代码中以超级用户身份运行。
乔·海明

由于某种原因,似乎在heredoc命令中设置了变量,但未设置变量。如果我尝试BLA="something",然后例如:echo "In: $BLA",则BLA似乎是空的
Efren 18'Sep
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.