AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1036032
Accepted
aPugLife
aPugLife
Asked: 2020-10-02 09:20:03 +0800 CST2020-10-02 09:20:03 +0800 CST 2020-10-02 09:20:03 +0800 CST

Nagios 用户运行 bash 脚本时出现权限错误,同样使用 sudo

  • 772

我想在出现电源故障时关闭我的 NAS 和 ESXI。这两个系统都在伊顿 UPS 上运行。我只运行 Linux 系统,因此我不能使用 Eaton Manager,仅限 Windows。

由于我将 Nagios 用于其他任务,因此我想创建一个插件,使用 ssh-public-key 可以连接到上述系统并关闭它们。

Nagios 用户的公钥已经安装在 ESXI 的 root 用户上(NAS 稍后会出现)。 当我将用户更改为 Nagios(在 Nagios 服务器上)并手动运行脚本时,它会连接到 ESXI 并且(目前)它会在 /tmp 上写入一个“testfile”。它有效。

当脚本由 Nagios 自己运行时,它不会. 此脚本作为处理程序运行:

define host {
    name                            home-monitoring
    use                             generic-host
    check_period                    24x7
    check_interval                  5
    contact_groups                  admins
    event_handler                   poweroff_host
    register                        0
}

cat /usr/lib64/nagios/plugins/poweroff_host.sh

#!/bin/bash
/usr/bin/ssh root@esxi -i /var/spool/nagios/.ssh/id_rsa "touch /tmp/testfile"

cat /etc/nagios/objects/commands.cfg

define command{
        command_name    poweroff_host
        command_line    sudo /usr/lib64/nagios/plugins/poweroff_host.sh
}

visudo

(at the bottom of the file)
nagios ALL = (root) NOPASSWD:/usr/lib64/nagios/plugins/poweroff_host.sh

我还将 nagios 用户添加到了 wheel 组(使用 usermod)

# grep wheel /etc/group
wheel:x:10:nagios

最后,在过去的 4 天里,我一直在这里打我的头,并且在日志中不断出现错误。最后一个错误是:

journalctl -xef

stderr line 01: /usr/lib64/nagios/plugins/poweroff_host.sh: line 2: /usr/bin/ssh: Permission denied

在 visudo 之前,错误是no ssh in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin),至少现在我设法改变了错误的类型。

我可以请一些帮助并解决问题吗?

更新 1:

[root@nagios ~]# audit2allow -i /var/log/audit/audit.log


#============= nagios_t ==============
allow nagios_t ldconfig_exec_t:file { execute getattr };
allow nagios_t nagios_spool_t:dir create;
allow nagios_t pam_var_run_t:dir write;
allow nagios_t ssh_exec_t:file { execute getattr };
allow nagios_t tmpfs_t:dir write;

快进到semodule命令,但 stderr line 01: /usr/lib64/nagios/plugins/poweroff_host.sh: line 2: /usr/bin/ssh: Permission denied仍然存在:/

我将尝试完全禁用 Selinux:/

centos centos7 selinux
  • 1 1 个回答
  • 711 Views

1 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2020-10-02T09:58:23+08:002020-10-02T09:58:23+08:00

    所以这里的问题是 SELinux 不允许 Nagios 做各种各样的事情,大概是你真正希望它做的事情(比如运行 ssh)。发行版不可能猜出您可能需要 Nagios 做的所有事情,因此虽然 SELinux 策略允许大多数与监控相关的事情,但它不允许这些事情。

    您可以通过将 Nagios 设置为许可模式暂时解决此问题(您不必将所有 SELinux 设置为许可模式,您可以针对个别类型进行设置):

    semanage permissive -a nagios_t
    

    完成此操作后,审核日志将随着时间的推移累积创建自定义 SELinux 策略模块所需的所有 AVC ,如果您愿意,安装该自定义策略模块后,您可以返回 SELinux 以强制执行 Nagios。

    semanage permissive -d nagios_t
    

    (请注意,除非域是允许的,否则尝试创建自定义策略模块是行不通的,因为并非所有必要的权限都会被触发并以强制模式登录。)

    • 1

相关问题

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 持续监控许多服务器运行状况的简单方法?

  • Hudson 无法在 tomcat5 中启动

  • CentOS 的依赖挑战

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve