루트가 아닌 사용자로 sendmail 상태 확인

루트가 아닌 사용자로 sendmail 상태 확인

5.5에서 CentOS 6.5로 변환 중인데 sendmail이 열려 있는지 확인하는 방법이 필요합니다. 진행하고 싶지 않은 이유로 sendmail이 루트가 아닌 사용자로 열려 있는지 확인할 수 있어야 합니다. CentOS 5.5에서는 /sbin/service sendmail status루트가 아닌 사용자로 실행할 수 있습니다. CentOS 6.5에서는 보안이 더욱 강화되었으며 /etc/init.d/sendmail스크립트에 새로운 코드가 추가되었습니다.

# Check that we're a privileged user
[ `id -u` = 0 ] || exit 4

sendmail 스크립트는 다음 코드를 사용하여 상태를 확인합니다.

status)
   echo -n sendmail; status -p /var/run/sendmail.pid -l sendmail
   RETVAL=$?
   echo -n sm-client; status -p /var/run/sm-client.pid -l sm-client
   [ $RETVAL -eq 0 ] && RETVAL=$?
  ;;

sendmail 스크립트 시작 부분에는 functions라이브러리가 소스 코드이므로 스크립트에서 status()호출할 수 있습니다.functions

 # Source function library.
. /etc/rc.d/init.d/functions

루트로 실행하면 일반적으로 다음이 표시됩니다 /sbin/service sendmail status.

sendmail (pid  1107) is running...
sm-client (pid  1115) is running...

루트가 아닌 사용자로 실행하면 다음과 같은 메시지가 나타납니다.return code 4

지금까지 시도한 것은 /var/run/sendmail.pid프로세스 ID를 가져왔는지 확인한 다음 프로세스 ID가 있는지 확인하고 /procpid를 입력하는 것입니다. 예를 들어,

루트가 아닌 사용자로서:

cat /var/run/sendmail.pid - Get the pid

1107
/usr/sbin/sendmail -bd -q3600s

그런 다음 확인합니다 /proc/1107/status.

Name:   sendmail
State:  S (sleeping)
Tgid:   1107
Pid:    1107
PPid:   1
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       51      51      51
Utrace: 0
FDSize: 32
Groups: 51
VmPeak:    12844 kB
VmSize:    12840 kB
VmLck:         0 kB
VmHWM:      2020 kB
VmRSS:      2020 kB
VmData:     1176 kB
VmStk:       208 kB
VmExe:       824 kB
VmLib:     10156 kB
VmPTE:        44 kB
VmSwap:        0 kB
Threads:        1
SigQ:   0/3865
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001006
SigCgt: 0000000180016201
CapInh: 0000000000000000
CapPrm: ffffffffffffffff
CapEff: ffffffffffffffff
CapBnd: ffffffffffffffff
Cpus_allowed:   1
Cpus_allowed_list:      0
Mems_allowed:   1
Mems_allowed_list:      0
voluntary_ctxt_switches:        560
nonvoluntary_ctxt_switches:     2

거기에 없으면 /proc/<pid>서비스가 열려 있지 않은 것입니다. 이 방법은 효과가 있는 것 같지만 완전히 신뢰하지는 않으며 오히려 /sbin/service sendmail status.

sendmail 서비스가 루트가 아닌 사용자로 실행되고 있는지 확인하는 가장 좋은 방법에 대한 아이디어가 있습니까?

관련 정보