linux – 限制使用`sudo -s`
我在我的一些
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 *
这应该工作并允许参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |