linux – 限制使用`sudo -s`

linux – 限制使用`sudo -s`,第1张

概述我在我的一些 Linux服务器上设置Nagios并遇到了一些问题. check_ide_smart插件需要root系统才能运行.要运行它,我使用check_by_ssh插件ssh到远程主机上的nagios帐户,然后使用sudo运行check_ide_smart. 我最初将以下行添加到/ etc / sudoers以允许程序工作: nagios ALL=NOPASSWD: /usr/lib/nag 我在我的一些 Linux服务器上设置Nagios并遇到了一些问题. check_IDe_smart插件需要root系统才能运行.要运行它,我使用check_by_ssh插件ssh到远程主机上的nagios帐户,然后使用sudo运行check_IDe_smart.

我最初将以下行添加到/ etc / sudoers以允许程序工作:

nagios  ALL=nopASSWD: /usr/lib/nagios/plugins/check_IDe_smart

虽然这在本地运行时工作得很好,但是当它从Nagios运行时我遇到了一个问题:没有生成TTY,这阻止了插件的工作.

我在sudo的man页面中挖了一个-s选项,它生成一个shell并在那里执行程序.当我尝试使用sudo -s时,我遇到了权限问题,因为-s显然将命令更改为/ bin / bash -c /usr/lib / nagios / plugins / check_IDe_smart,这是sudoers文件不允许的.我尝试更改sudoers文件以使用该命令,但这不起作用,并且使用引号是语法错误.

我最终通过在/ etc / sudoers中使用以下行来使其工作:

nagios ALL=/bin/bash

这让我感到非常不对,因为我允许nagios用户生成一个root shell,用它们可以做任何事情.

此时,我可能通过将命令放在shell脚本中,nagios用户具有只读权限,因此我创建了一个shell脚本:

#!/bin/sh/bin/bash -c /usr/lib/nagios/plugins/check_IDe_plugin $@

不幸的是,我永远无法获得传递的参数($@)来正确使用插件,所以我不知道这是否有效.编辑:我需要引用$@才能正常工作.谢谢@derobert和@pjz.我仍然不知道它是否会起作用,因为我使用@Mike Arthur的解决方案让它工作.

有没有办法在不允许产生根shell的情况下让sudo -s工作?

回答:

在/ etc / sudoers中添加了以下行:

nagios ALL=nopASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_IDe_smart *

注意尾随的星号;没有它,这不起作用.谢谢@Mike Arthur的回答.

解决方法 nagios ALL = nopASSWD:/ bin / bash -c /usr/lib / nagios / plugins / check_IDe_smart *

这应该工作并允许参数.

总结

以上是内存溢出为你收集整理的linux – 限制使用`sudo -s`全部内容,希望文章能够帮你解决linux – 限制使用`sudo -s`所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1044345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存