verificando o status do sendmail como usuário não root

1

Eu estou no processo de converter para o CentOS 6.5 do 5.5 e preciso de uma maneira de verificar se o sendmail está ligado ou não. Por razões que eu não quero passar, eu preciso ser capaz de verificar se o sendmail está ligado como um usuário não raiz. No CentOS 5.5, eu poderia usar /sbin/service sendmail status executando como um usuário não root. No CentOS 6.5, a segurança é um pouco mais rígida e um novo código foi adicionado ao script /etc/init.d/sendmail :

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

O script do sendmail usa o seguinte código para verificar seu status:

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=$?
  ;;

No começo do script do sendmail, a biblioteca functions é a fonte, então status() pode ser chamado no script functions

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

Como root, você normalmente veria isso ao executar /sbin/service sendmail status :

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

Ao ser executado como um usuário não raiz, recebo return code 4

O que eu tentei até agora é verificar /var/run/sendmail.pid para obter o ID do processo, então eu verifico se existe e há entrada em /proc para o pid. Por exemplo,

Como um usuário não root:

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

1107
/usr/sbin/sendmail -bd -q3600s

Então eu verifico /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

Se /proc/<pid> não existir, sei que o serviço não está ativo .. Este método parece funcionar, mas não confio completamente nele e prefiro usar /sbin/service sendmail status .

Alguma idéia sobre a melhor maneira de verificar se o serviço sendmail está sendo executado como um usuário não root ??

    
por GoinOff 18.06.2014 / 16:07

0 respostas