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가 있는지 확인하고 /proc
pid를 입력하는 것입니다. 예를 들어,
루트가 아닌 사용자로서:
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 서비스가 루트가 아닌 사용자로 실행되고 있는지 확인하는 가장 좋은 방법에 대한 아이디어가 있습니까?