以特定用户身份启用无密码sudo


26

我的系统上有两个用户:itsadok,我的主要用户,和elasticsearch,一个用于运行ElasticSearch的ulimit不同的用户。

我希望能够以二级用户身份运行内容,而不必每次都提示输入密码。

我将以下行添加到/etc/sudoers

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

以我的理解,这应该允许用户itsadok在任何主机上以(用户或组)elasticsearch的身份运行任何命令而无需输入密码。但是,尝试类似

itsadok@dev001$ sudo -u elasticsearch ls

提示我输入密码。重新启动计算机没有帮助。

我究竟做错了什么?

更新

事实证明,行的顺序sudoers很重要。我在“用户权限规范”下放置了该行,听起来像是在正确的位置,但是%admin后来出现的组的行覆盖了该设置。

将相同的行放在sudoers文件的末尾可解决此问题。

Answers:


12

修改后的注释答案:如果将指令放在下面#includedir,它们将被忽略。将行移动到sudoadmin组定义旁边,或将其放在中的单独文件中/etc/sudoers.d/


没用 另外,该文件root ALL=(ALL:ALL) ALL在冒号周围已经没有空格了,因此看起来不正确。为了安全起见,我尝试过(elasticsearch)。不起作用
itsadok 2013年

您是正确的,它至少在12.10中没有空格。您正在使用哪个Ubuntu,以及sudoers该行的确切位置?我有一种淡淡的回忆,那就是如果您在较旧的系统上先放置该行#includedir,则会被忽略。如果它在文件末尾,请尝试将其插入到includeir上方。
Tuminoid

1
您的评论使我走上了正确的道路:条目的顺序很重要。以后的设置将覆盖以前的设置。
itsadok

16

跟着这些步骤:

  1. 编辑sudoers文件(该文件可以存在于/etc/sudoers.d/file_name中)
sudo visudo -f /etc/sudoers
  1. 在文件末尾添加行
usernameusedforlogin ALL=(ALL) NOPASSWD:ALL
  1. 保存存档
esc :wq!

这使用户可以像任何用户一样在没有密码的情况下在所有主机上运行所有命令,但是它不授予任何组特权,这是原始问题的一部分。通常,这是个坏建议,因为您为用户提供了广泛的特权。
d4nyll
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.