проверка статуса sendmail как НЕ root-пользователь

проверка статуса sendmail как НЕ root-пользователь

Я нахожусь в процессе перехода на CentOS 6.5 с 5.5 и мне нужен способ проверить, включен ли sendmail. По причинам, которые я не хочу описывать, мне нужно иметь возможность проверить, включен ли sendmail, будучи НЕ пользователем root. В CentOS 5.5 я мог бы использовать /sbin/service sendmail statusзапуск как не пользователь root. В 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

Как пользователь root, вы обычно увидите это при запуске /sbin/service sendmail status:

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

При запуске как НЕ root пользователь я получаюreturn code 4

То, что я пробовал до сих пор, это проверка /var/run/sendmail.pid, чтобы получить идентификатор процесса, затем я проверяю, есть ли там и запись /procдля pid. Например,

Как НЕ root-пользователь:

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 от имени пользователя НЕ root?

Связанный контент