루트가 아닌 사용자로 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

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

루트가 아닌 사용자로서:

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

관련 정보