我在 macos 上有两个用户。U1
一个是非管理员用户,一个U2
是管理员用户。
我无法添加U1
到 sudoers。有没有办法使用它U2
来充当它正在U1
发出sudo <command>
?
我的想法:
U1> su U2
U2> sudo -u U1 <command>
U1
这是实现与问题相同的结果的正确方法吗sudo <command>
?
我尝试在第 1 行之前设置环境变量U1
,然后在第 2 行中用 打印出来,结果成功了,我得到了正确的值。但我仍然不确定这是否是代表sudo -u U1 echo $VAR
安装复杂软件包等的正确过程。U2
U1
有任何更正/建议吗?
答案1
如果我明白你想做什么,请省略-u U11
:
U1> su U2
U2> sudo <command>
请注意,您必须在每个步骤中都进行身份验证;在两个步骤中,您都需要使用 U2 用户的密码。
解释:su
和sudo
都是有效切换用户身份(或者更准确地说,以不同的用户身份运行命令)的方法。通常,当您使用 时sudo
,它是运行命令以 root 用户身份。您可以使用sudo -u someotheruser
以 root 以外的其他人/事物的身份运行命令,但默认情况下sudo
以 root 身份运行命令,这大概就是您想要做的。
(人们有时会说“作为sudo
”来管理事物,但这是无稽之谈;他们实际上谈论的是使用sudo
作为管理事物的工具以 root 身份。
你的问题中的步骤是 1)使用su
从 U1 切换到 U2,然后 2)使用sudo -u U1
切换后退到 U1,你就回到原来的位置了。