Überprüfen des Sendmail-Status als NICHT-Root-Benutzer

Überprüfen des Sendmail-Status als NICHT-Root-Benutzer

Ich bin gerade dabei, von 5.5 auf CentOS 6.5 umzusteigen und brauche eine Möglichkeit, um zu prüfen, ob Sendmail eingeschaltet ist oder nicht. Aus Gründen, die ich hier nicht näher erläutern möchte, muss ich als NICHT-Root-Benutzer prüfen können, ob Sendmail eingeschaltet ist. In CentOS 5.5 könnte ich es als Nicht-Root-Benutzer ausführen /sbin/service sendmail status. In CentOS 6.5 ist die Sicherheit etwas strenger und dem /etc/init.d/sendmailSkript wurde neuer Code hinzugefügt:

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

Das Sendmail-Skript verwendet den folgenden Code, um seinen Status zu überprüfen:

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

Am Anfang des Sendmail-Skripts functionsist die Bibliothek als Quelle vorhanden und status()kann daher im functionsSkript aufgerufen werden.

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

Als Root sehen Sie beim Ausführen normalerweise Folgendes /sbin/service sendmail status:

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

Wenn ich als NICHT-Root-Benutzer arbeite, erhalte ichreturn code 4

Was ich bisher versucht habe, ist, /var/run/sendmail.piddie Prozess-ID zu ermitteln. Dann prüfe ich, ob ein Eintrag /procfür die PID vorhanden ist. Zum Beispiel:

Als NICHT-Root-Benutzer:

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

1107
/usr/sbin/sendmail -bd -q3600s

Dann prüfe ich /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

Wenn /proc/<pid>nicht vorhanden, weiß ich, dass der Dienst nicht aktiviert ist. Diese Methode scheint zu funktionieren, aber ich vertraue ihr nicht vollständig und würde lieber verwenden /sbin/service sendmail status.

Irgendwelche Ideen, wie man am besten überprüft, ob der Sendmail-Dienst als NICHT-Root-Benutzer ausgeführt wird?

verwandte Informationen