如何在脚本中为 sudo su 提供密码

如何在脚本中为 sudo su 提供密码

示例脚本:

sudo su admin
ls /usr/bin
exit

当我用以下方式运行它时:

biske@comp1:~$ ./script

然后提示符变为:

admin@comp1:/home/biske$

当我输入 exit 时,它实际上会打印出以下几行:

exit bin  games  include  lib  lib32  local sbin  share  src

我想要输出而不需要用户输入任何内容。

sudo su我认为通过向该命令输入密码可以解决问题。

有办法吗?

答案1

sudo su user会进入一个新的 shell。这是在非交互式脚本中你最不想做的事情。抱歉,我的意思是这是在脚本中你最不想做的事情将密码硬编码到其中!请避免这样做。

最好跳过su并单独使用 sudo:

sudo -u admin -- ls /usr/bin

或者如果失败了,只需确保您的脚本以 root 身份运行,并使用此块:

if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

然后就完全不需要在脚本内部进行交互了。您的脚本可以做sudo -u... command任何事情而不需要更改密码。

相关内容