我有一个 shell 脚本,其中大多数命令需要在 sudo 下运行;但是,最后几个命令需要以当前用户身份运行。有没有办法可以退出 sudo 并切换到当前登录的用户?
如果我从命令行运行所有这些,我可以执行以下操作:
sudo su
[su commands]
exit
[user commands]
但是,exit
将会在该命令处停止脚本。
答案1
您是否考虑过修改脚本以将其sudo
作为需要以 root 身份运行的命令的前缀?sudo
内置的凭证缓存机制意味着您只需要回答一次密码提示,除非 shell 脚本运行很长时间。
答案2
不要使用sudo su
或su - <user>
,因为使用此命令会打开子 shell。这样效果不太好。
请使用
sudo "su commands"
例如sudo "ls /home"
如果你真的想使用sudo su
,你可以通过输入例如来使用它
sudo su -c "ls /tmp"
如果有多个命令,请使用以下方式分隔;
sudo su -c "ls /tmp/; whoami"