소켓을 바인딩할 수 없습니다: 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

이 명령을 루트로 실행했습니다. 나는 TCP 대신 UNIX 소켓을 사용하기로 결정했습니다. 다시 시작한 후 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는 루트 그룹의 구성원이 아닙니다.

# 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구성 파일의 다른 곳에서 구성할 수 있습니다. ]

관련 정보