#!/bin/bash
sudo su - team //// this will change user to team
<somecommnand>
这里我有一些像sqlplus这样的命令只能在这个特权下运行。
但是,这个脚本首先要求输入密码,然后我给密码,但它不会运行其他命令,如。
如何编写使用sudo su的脚本并在其下面的脚本中运行所有命令。
答案 0 :(得分:0)
您有几种选择。
您可以将sudo
命令移到脚本之外,让人们这样称呼它:
sudo -u team /path/to/your/script
您可以将sudo
命令放在一个脚本中,并将要在另一个脚本中使用提升的权限运行的实际命令。也就是说,人们运行your_script
,看起来像:
#!/bin/sh
sudo -u team /path/to/your_script.real
your_script.real
包含您希望以提升的权限运行的命令。
如果你真的想要同一个脚本中的所有内容并且你不介意有点过于聪明,你可以让脚本检查使用sudo
重新执行它自己:
#!/bin/sh
TEAM_UID=500 # replace with correct uid
if [ "$UID" != $TEAM_UID ]; then
exec sudo -u team $0
fi
您还可以从 stdin 向shell提供命令,如下所示:
#!/bin/sh
sudo su - team <<'EOF'
echo my uid is $UID
EOF
答案 1 :(得分:-2)
您可以尝试将所有命令放在同一行,并将其与&#39;;&#39;分开。
例如。 &#39; sudo su; somecommand;另一个命令&#39;
也可以将该脚本作为目标用户运行。