我最近在我的(基于 Fedora 的)服务器上安装了 munin。现在,我想获取静态目录中的所有图形(应用程序在 Django 上运行)。因此,我通过将
\etc\munin\munin.conf
设置为静态文件夹的绝对路径来编辑文件 htmldir
。然后,当我执行munin-cron
时,出现以下错误:
This program will easily break if you run it as root as you are
trying now. Please run it as user 'nobody'. The correct 'su' command
on many systems is 'su - munin --shell=/bin/bash'
Aborting.
因此,我更改了用户并尝试以 munin 作为用户运行相同的操作。然后我收到以下错误:
[ERROR] Could not copy contents from /etc/munin/static/ to /[path to static
file] at /usr/share/perl5/vendor_perl/Munin/Master/HTMLOld.pm line 716.
我
chown
编辑了静态目录(对于munin用户递归),甚至尝试使用chmod 777
(实际上不应该这样做),所以基本上这似乎不是权限问题。
此外,我的开发服务器是基于 Ubuntu (12.04) 的。那里工作得很好。即使我的本地机器运行 Ubuntu (14.04),它也能正常工作。这可能是操作系统问题吗?这似乎不太可能。我还可能错过什么?任何帮助将不胜感激。
PS:还有一个问题。当我在 Ubuntu 中以 root 身份运行
munin-cron
时,它给出的错误是:
This program will easily break if you run it as root as you are
trying now. Please run it as user 'munin'. The correct 'su' command
on many systems is 'su - munin --shell=/bin/bash'
Aborting.
而这里是
nobody
。会不会是配置问题?
我在 CentOS 6.5 上也遇到了同样的问题。没有可能的权限修复了这个问题。所以我必须代表 munin 用户在 root 的 crontab 下运行 cron。听起来很疯狂,但它确实有效:
*/5 * * * * sudo -u munin crontab -e
Defaults requiretty
中的这一行 /etc/sudoers
可能是您不仅对目标目录没有写权限,而且对它下的子目录“static”也没有写权限。
这可以通过运行来解决:
# chown -R munin:munin /var/www/html/munin/static/
说明如下:
就我而言,错误是:
Could not copy contents from /etc/munin/static/ to /var/www/html/munin at /usr/share/perl5/vendor_perl/Munin/Master/HTMLOld.pm line 795
,即:
unless(dircopy($staticdir, "$htmldir/static")){
ERROR "[ERROR] Could not copy contents from $staticdir to $htmldir";
die "[ERROR] Could not copy contents from $staticdir to $htmldir";
}
事实上该目录错误地由 root 拥有:
$ ls -l /var/www/html/munin
total 0
drwxr-xr-x 2 munin munin 51 Jun 25 13:44 cgi
drwxr-xr-x 2 root root 24 Jun 25 13:44 static
这发生在 RHEL9 上的 munin-2.0.75-1.el9.noarch 上。