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

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

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

我希望能够以次要用户身份运行东西,而不必每次都提示输入密码。

我添加了以下行/etc/sudoers

itsadok ALL=(elasticsearch:elasticsearch) NOPASSWD: ALL

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

itsadok@dev001$ sudo -u elasticsearch ls

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

我究竟做错了什么?

更新

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

将同一行放在 sudoers 文件末尾即可解决该问题。

答案1

按着这些次序:

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

答案2

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

答案3

或者,您可以使用 python pudo 包:https://pypi.org/project/pudo/1.0.0/

安装:

user$ sudo -H pip3 install pudo # you can install using pip2 also 

下面是在 root 权限下使用 Python 自动化运行 cmd 的代码片段:

user$ python3 # or python2
>>> import pudo
>>> (ret, out) = pudo.run(('ls', '/root')) # or pudo.run('ls /root')
>>> print(ret)
>>> 0
>>> print(out)
>>> b'Desktop\nDownloads\nPictures\nMusic\n'

下面是在 root 权限下运行 cmd 的示例

user$ pudo ls /root
Desktop  Downloads  Pictures  Music

相关内容