我可以访问群组机器(linux-boxes),并且我已经创建了用户。
我需要运行一些需要sudo的命令。
但其他命令必须从无法sudo的用户运行。
如何在sudo和不能用户之间来回切换?
更新:Problems with sudo inside expect script期望脚本显示了一个很好的例子。
答案 0 :(得分:1)
如果您是sudo
的特权用户(通常是debian系统上的sudo
组成员),您可以像使用其他任何用户一样运行命令:
sudo -u nobody ls
来自sudo的联机帮助页:
-u user The -u (user) option causes sudo to run the specified command as a user other than root. To specify a uid instead of a user name, use #uid.
When running commands as a uid, many shells require that the '#' be escaped with a backslash ('\'). Security policies may restrict uids to
those listed in the password database. The sudoers policy allows uids that are not in the password database as long as the targetpw option is
not set. Other security policies may not support this.
通常情况下,您可能希望创建一个连接为您喜欢的sudoer的脚本,以root用户身份运行一些sudo
命令,并以其他用户身份运行所有其他命令。
答案 1 :(得分:0)
sudo
启动另一个进程,shell本身无法设置其UID。所以:
#!/bin/sh
echo Normal user
id
sudo sh -c '
echo Root user
id
echo More commands as root user...
'
echo Back to normal user
id
尽管在内壳中逃逸时要小心。
对于一些命令,您显然可以在每个命令前加sudo
:
sudo echo Root user
sudo id
sudo echo More commands as root user...
无需担心逃离。