无法绑定套接字:尝试使用 UNIX 套接字启动 NDOUtils 时权限被拒绝

无法绑定套接字:尝试使用 UNIX 套接字启动 NDOUtils 时权限被拒绝

我跟着这些前往发球台的路线:

一切都很顺利,直到我真正尝试运行这个命令(文章中有一个拼写错误,我在这里更正了它):

/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

我的结果:

# /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 
Could not bind socket: Permission denied

我已经以 root 身份运行这个命令了。我选择使用 UNIX 套接字而不是 TCP。重新启动后,Nagios 日志显示以下内容,但如果我尝试手动运行该命令,则不会显示任何内容。

[1371152186] ndomod: NDOMOD 1.5.2 (06-08-2012) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1371152186] ndomod: Could not open data sink!  I'll keep trying, but some output may get lost...
[1371152186] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.

查看进程树,我发现没有任何类型的“ndo”进程正在运行。

看看 netstat,我看到了这一点:

unix  2      [ ACC ]     STREAM     LISTENING     841374 /var/run/saslauthd/mux
unix  2      [ ACC ]     STREAM     LISTENING     840356 @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    840610 @/org/kernel/udev/udevd
unix  10     [ ]         DGRAM                    841162 /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     841337 /var/lib/mysql/mysql.sock
unix  2      [ ]         DGRAM                    857504 
unix  2      [ ]         DGRAM                    847472 
unix  2      [ ]         DGRAM                    841625 
unix  2      [ ]         DGRAM                    841584 
unix  2      [ ]         DGRAM                    841534 
unix  2      [ ]         DGRAM                    841517 
unix  2      [ ]         DGRAM                    841373 
unix  2      [ ]         DGRAM                    841212 
unix  3      [ ]         DGRAM                    840614 
unix  3      [ ]         DGRAM                    840613 

我尝试启用此实用程序的调试:

debug_level=-1
debug_verbosity=1
debug_file=/usr/local/nagios/var/ndo2db.debug
max_debug_file_size=1000000

但没有写入任何内容/usr/local/nagios/var/ndo2db.debug

答案1

这是权限。此进程尝试在用户“nagios”下启动,但 root:root 是 /usr/local/nagios 的用户:组所有者,并且用户 nagios 不是 root 组的成员:

# groups nagios
nagios: nagios centreon

无论如何,解决方案是(我认为):

# chmod -R 770 /usr/local/nagios
# chgrp -R nagios /usr/local/nagios

现在它立即启动:

# /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 
# ps aux | grep ndo
nagios    4423  0.0  0.0   8220   652 ?        Ss   00:14   0:00 /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

如果您发现这些权限存在任何问题,请告诉我。

# stat /usr/local/nagios
  File: `/usr/local/nagios'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 18h/24d Inode: 75507753    Links: 5
Access: (0770/drwxrwx---)  Uid: (    0/    root)   Gid: (  499/  nagios)
Access: 2013-06-14 00:16:38.195375728 +0400
Modify: 2013-06-13 22:38:29.836402241 +0400
Change: 2013-06-14 00:16:38.196375599 +0400

答案2

该错误Could not bind socket: Permission denied可能是由于写入套接字文件的目录的写权限所致。

就我而言,我不得不chmod这样/dir/of/socket/fie/777。此更改后进程成功启动。

/usr/local/nagiosIMO不需要更改权限。它只是ndo2db进程尝试写入套接字文件的目录。 [ 通常是 ../var,但是可以在ndo配置文件中的其他位置进行配置。 ]

相关内容