Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109151
  • 博文数量: 34
  • 博客积分: 791
  • 博客等级: 军士长
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-25 14:36
文章分类

全部博文(34)

文章存档

2012年(33)

2011年(1)

我的朋友
最近访客

分类: 系统运维

2012-01-31 11:53:35

通过web界面修改某个服务时报错例如对某个服务进行临时安排其执行时间,或者不让它发警告,web页面上都有这样的设置.但是常常会有错误信息如下:

Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update!The permissions on the external command file and/or directory may be incorrect. Read the FAQs on how to setup proper permissions.An error occurred while attempting to commit your command for processing.
 关于这部分在nagios.cfg中有下面的内容

# EXTERNAL COMMAND FILE# This is the file that Nagios checks for external command requests.# It is also where the command CGI will write commands that are submitted# by users, so it must be writeable by the user that the web server# is running as (usually 'nobody').  Permissions should be set at the# directory level instead of on the file, as the file is deleted every# time its contents are processed.

 这段话的核心意思是apache的运行用户要有对文件写的权限.权限应该设置在目录上,因为每次文件的内容被处理后文件就会被删掉

 command_file=/usr/local/nagios/var/rw/nagios.cmd

 

首先,看一下你的进程,apache的进程,是什么用户运行,一般会是nobody

#ps -ef | grep http
root   27252   1 0 Feb26 ?     00:00:01 /usr/local/apache/bin/httpd -k start
nobody   12587 27252 0 15:23 ?     00:00:00 /usr/local/apache/bin/httpd -k start
nobody   12588 27252 0 15:23 ?     00:00:00 /usr/local/apache/bin/httpd -k start
nobody   12589 27252 1 15:23 ?     00:00:01 /usr/local/apache/bin/httpd -k start
nobody   12590 27252 1 15:23 ?     00:00:01 /usr/local/apache/bin/httpd -k start
nobody   12591 27252 0 15:23 ?     00:00:00 /usr/local/apache/bin/httpd -k start
nobody   12618 27252 0 15:23 ?     00:00:00 /usr/local/apache/bin/httpd -k start

注意,这里指的是普通用户,而不是root运行的那个起始进程。

然后怎么做呢,如果你运行的nagios进程的用户是nagios,组也是nagios,则:

usermod -G nagios nobody
chmod g+s /path/to/nagiosdir/var/rw

注意,cgi.cfg里面设置就不多说了。

然后重启apache,这样就能运行了。

 

 关于apache的启动用户,是在httpd.conf中定义的:

User  ***

Group  ***

缺省设置为nobody和nogroup,这个用户和组在系统中不拥有文件,保证了服务器本身和由它启动的CGI 进程没有权限更改文件系统。在某些情况下,例如为了运行CGI与Unix交互,也需要让服务器来访问服务器上的文件,如果仍然使用nobody和 nogroup,那么系统中将会出现属于nobody的文件,这对于系统安全是不利的,因为其他程序也会以nobody和nogroup的权限执行某些操作,就有可能访问这些nobody拥有的文件,造成安全问题。一般情况下要为Web服务设定一个特定的用户和组,同时在这里更改用户和组设置。

阅读(1404) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~