允许sudo没有密码的其他用户


46

我希望能够“ su”到特定用户,从而允许我在不输入密码的情况下运行任何命令。

例如:

如果我的登录名是user1,而我想“ su”的用户是user2:

我会使用以下命令:

su - user2

但随后它提示我

Password:


向其他用户询问密码。至少其他用户知道他/她的ID下所做的事情。
全球游牧民

1
这与另一个物理用户无关。两个ID都是我的。创建帐户时我知道密码。我只是不想每次都输入密码。
齐奥

向用户SSH可以吗,或者您是否需要特别继承一个shell并需要su才能工作?
bmike

1
@zio很棒的用例。不open -na Skype适合您吗?
bmike

Answers:


66

sudo 可以为您做到这一点:)

虽然它需要一些配置,但是一旦完成,您就只能这样做:

sudo -u user2 -s

并且您将以user2身份登录而无需输入密码。

组态

要配置sudo,必须通过以下命令编辑其配置文件visudo。注意:此命令将使用vi文本编辑器打开配置,如果与之不符,则需要export EDITOR=<command>在执行以下行之前设置另一个编辑器(使用)。另一个有时被认为更容易的命令行编辑器也可以nano,所以您可以这样做export EDITOR=/usr/bin/nano。您通常需要超级用户特权才能visudo

sudo visudo

该文件的结构由不同的部分组成:别名,然后是默认值,最后是规则。这是您需要添加新行的地方。因此,您可以在文件末尾导航并添加以下内容:

user1    ALL=(user2) NOPASSWD: /bin/bash

您也可以替换/bin/bashALL,然后您可以以user2身份启动任何命令而无需输入密码: sudo -u user2 <command>

如果您希望能够切换到任何用户,请使用

user1    ALL=(ALL) NOPASSWD: /bin/bash

更新资料

我刚刚看到了您对Skype的评论。您可以考虑将Skype直接添加到sudo的配置文件中。我假设您在“ 应用程序”文件夹中安装了Skype :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

然后,您将从终端呼叫:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

这远没有ssh密钥概念复杂,因此,除非您也需要ssh密钥进行远程访问,否则请使用它。
bmike

2
从安全角度来看,要注意的一件事是,指定特定命令意味着该命令应该是user1的只读命令;否则,他们可以用其他内容覆盖该命令,然后以user2身份运行该命令。而且,如果您对此并不在意,则可以指定user1可以以user2身份运行任何命令,因此可以使用更简单的sudo配置。
Stan Kurdziel 2015年

@StanKurdziel好点!尽管需要注意,但是除非您是root用户,否则很少有用户可写的系统可执行文件,但是在这种情况下,您不需要sudo ;-)但是添加此注释是正确的,因为它很少我可能多次忽略了它。
惠更斯2015年

为了使其更接近于行为,su - user2而不是su user2命令,可能应该全部包含这些命令sudo -u user2 -i,以便模拟以user2身份进行的初始登录
Gert van den Berg

4

我将为第二个帐户设置公共/私有ssh密钥,并将密钥存储在第一个帐户中。

然后,您可以运行以下命令:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

您仍然会遇到Skype感到困惑的问题,因为两个实例正在一个用户帐户上运行,并且该程序读取/写入的文件可能会发生冲突。它还可以很好地满足您的需求,并且您不需要iPod touch即可运行第二个Skype实例。


1
对于通常无密码登录到任何主机上的任何帐户的情况,这是一个很好的安全解决方案,但是我想说,当两个帐户都在同一主机上并属于同一用户时,这可能会显得过分杀伤力。
calum_b

@scottishwildcat比编写密码脚本并以明文形式输入密码或使用变量将密码存储在钥匙串中并使用诸如expect编写交互脚本之类的工具安全得多。我只使用sudo su - blah并输入密码。我认为其他答案涵盖了sudo,足以将其保留为评论。
bmike

哦,我当然不是在建议删除您的答案……我什至没有拒绝投票,这是一个非常好的答案。
calum_b

我们似乎完全同意-感谢您的添加-如果您可以改进它,请随时将其编辑为答案。
bmike

公认的解决方案(sudo -u user2 <...>)确实具有不能远程使用的优势,这可能有助于提高安全性-没有用户1的私钥可以被盗用。
Gert van den Berg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.