LINUX.ORG.RU
решено ФорумAdmin

smartd + email +bash scripts = email: FATAL: Could not connect to server: smtp.mail.ru on port: 25: Permission denied

 , ,


0

1

uname -a

Linux vybornaya.ru 2.6.32-358.el6.i686 #1 SMP Thu Feb 21 21:50:49 UTC 2013 i686 i686 i386 GNU/Linux
email --version
email - By: Dean Jones. Email: deanjones@cleancode.org.
Version 3.1.3 - Date 10/31/2010-01:13:35PM_EDT 

smartd --version

smartd 5.43 2012-06-30 r3573 [i686-linux-2.6.32-358.el6.i686] (local build)

cat /usr/local/bin/send_email_smartd.bsh

#!/bin/bash

export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
EMAIL=/usr/local/bin/email
TO_MAIL="xxxx@mail.ru xxxxxx@mail.ru"
if [ -x $EMAIL ] ; then.
<------>for TO_MAIL_SINGLE in $TO_MAIL ; do.
<------> echo "Warrning S.M.A.R.T . Problem detected with disk \"$SMARTD_DEVICESTRING\"
Warning message from smartd is: \"$SMARTD_FULLMESSAGE\""| email -s "Message info server $HOSTNAME" $TO_MAIL_SINGLE.
<------>done
fi

cat /etc/smartd.conf

DEVICESCAN -a -d sat -S on -o on -H -p -l selftest -i 194 -m nomailer  -M daily -M exec /usr/local/bin/send_email_smartd.bsh

Итого в логах имею

Oct  7 17:22:22 vybornaya smartd[28763]: email: FATAL: Could not connect to server: smtp.mail.ru on port: 25: Permission denied
Oct  7 17:22:22 vybornaya smartd[28763]: email: FATAL: Could not connect to server: smtp.mail.ru on port: 25: Permission denied
Oct  7 17:22:22 vybornaya smartd[28763]: Warning via /usr/local/bin/send_email_smartd.bsh to nomailer: successful
Oct  7 17:22:22 vybornaya smartd[28763]: Device: /dev/sda [SAT], 2 Offline uncorrectable sectors
Oct  7 17:22:22 vybornaya smartd[28763]: Sending warning via /usr/local/bin/send_email_smartd.bsh to nomailer ...
Oct  7 17:22:22 vybornaya smartd[28763]: Warning via /usr/local/bin/send_email_smartd.bsh to nomailer produced unexpected output (174 bytes) to STDOUT/STDERR:

Oct  7 17:22:22 vybornaya smartd[28763]: email: FATAL: Could not connect to server: smtp.mail.ru on port: 25: Permission denied
Oct  7 17:22:22 vybornaya smartd[28763]: email: FATAL: Could not connect to server: smtp.mail.ru on port: 25: Permission denied
Oct  7 17:22:22 vybornaya smartd[28763]: Warning via /usr/local/bin/send_email_smartd.bsh to nomailer: successful
Oct  7 17:22:22 vybornaya smartd[28777]: smartd has fork()ed into background mode. New PID=28777.

Так же почти такими же скриптами отсылается уведомление об перезагрузках сервера и об login - ах как локально так и по ssh, и там все работает, почта с уведомлениями приходит. Так же эта же связка работает безупречно ещё примерно на 10 машинах. А вот на этой не хотит. И я не догоняю что от меня хотит smartd этой строчкой

Warning via /usr/local/bin/send_email_smartd.bsh to nomailer produced unexpected output (174 bytes) to STDOUT/STDERR:


А в группу mail входит? Все остальные составляющие такие же?

leonidko ★★★★
()

Подскажите, а переменные $SMARTD_* откуда берутся? они экспортируются в окружение во время работы самого smartd? точки в скрипте после then, do и email - это так и задумано?

nerve ★★
()
Ответ на: комментарий от nerve

Подозреваю что да, эти переменные должны экспортироваться самим smartd перед вызовом скрипта. Скрипты писались с года полтора назад по какой то статейке в интернете. Точки это кривой copy paste c mcedit.

pavel38
() автор топика
Ответ на: комментарий от hidden_4003

Ну это я смогу показать да и сам посмотреть только завтра, когда доберусь до большого ПК.

pavel38
() автор топика
Ответ на: комментарий от pavel38

Неужели он включен?

ЕМНИП, в centos-реализации selinux права на запуск скрипта не означают автоматом, что контекст сменится. А sshrc может давать ему совершенно другой контекст с другими правами.

x3al ★★★★★
()
Ответ на: комментарий от hidden_4003
type=AVC msg=audit(1381194023.090:627): avc:  denied  { search } for  pid=24431 comm="sh" name="users" dev=sda2 ino=196797 scontext=unconfined_u:system_r:fsda
type=SYSCALL msg=audit(1381194023.090:627): arch=40000003 syscall=195 success=no exit=-13 a0=80e8d33 a1=bfb0a58c a2=33cff4 a3=83a4d20 items=0 ppid=24430 pid=2
type=AVC msg=audit(1381194023.098:628): avc:  denied  { search } for  pid=24434 comm="send_email_smar" name="users" dev=sda2 ino=196797 scontext=unconfined_u:
type=SYSCALL msg=audit(1381194023.098:628): arch=40000003 syscall=195 success=no exit=-13 a0=80e8d33 a1=bfa21cac a2=cf9ff4 a3=9389200 items=0 ppid=24432 pid=2
type=AVC msg=audit(1381194023.161:629): avc:  denied  { name_connect } for  pid=24434 comm="email" dest=25 scontext=unconfined_u:system_r:fsdaemon_t:s0 tconte
type=SYSCALL msg=audit(1381194023.161:629): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bffcd770 a2=bffcd7a0 a3=3 items=0 ppid=24432 pid=24434 auid=
type=AVC msg=audit(1381194023.163:630): avc:  denied  { search } for  pid=24436 comm="send_email_smar" name="users" dev=sda2 ino=196797 scontext=unconfined_u:
type=SYSCALL msg=audit(1381194023.163:630): arch=40000003 syscall=195 success=no exit=-13 a0=80e8d33 a1=bfa21cac a2=cf9ff4 a3=9389200 items=0 ppid=24432 pid=2
type=AVC msg=audit(1381194023.224:631): avc:  denied  { name_connect } for  pid=24436 comm="email" dest=25 scontext=unconfined_u:system_r:fsdaemon_t:s0 tconte
type=SYSCALL msg=audit(1381194023.224:631): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bfbd6f20 a2=bfbd6f50 a3=3 items=0 ppid=24432 pid=24436 auid=
type=AVC msg=audit(1381194023.229:632): avc:  denied  { search } for  pid=24437 comm="sh" name="users" dev=sda2 ino=196797 scontext=unconfined_u:system_r:fsda
type=SYSCALL msg=audit(1381194023.229:632): arch=40000003 syscall=195 success=no exit=-13 a0=80e8d33 a1=bf83c81c a2=32fff4 a3=89c5d20 items=0 ppid=24430 pid=2
type=AVC msg=audit(1381194023.235:633): avc:  denied  { search } for  pid=24440 comm="send_email_smar" name="users" dev=sda2 ino=196797 scontext=unconfined_u:
type=SYSCALL msg=audit(1381194023.235:633): arch=40000003 syscall=195 success=no exit=-13 a0=80e8d33 a1=bfc753ac a2=342ff4 a3=91c41f8 items=0 ppid=24438 pid=2
type=AVC msg=audit(1381194023.296:634): avc:  denied  { name_connect } for  pid=24440 comm="email" dest=25 scontext=unconfined_u:system_r:fsdaemon_t:s0 tconte
type=SYSCALL msg=audit(1381194023.296:634): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bf988c80 a2=bf988cb0 a3=3 items=0 ppid=24438 pid=24440 auid=
type=AVC msg=audit(1381194023.297:635): avc:  denied  { search } for  pid=24442 comm="send_email_smar" name="users" dev=sda2 ino=196797 scontext=unconfined_u:
type=SYSCALL msg=audit(1381194023.297:635): arch=40000003 syscall=195 success=no exit=-13 a0=80e8d33 a1=bfc753ac a2=342ff4 a3=91c41f8 items=0 ppid=24438 pid=2
type=AVC msg=audit(1381194023.358:636): avc:  denied  { name_connect } for  pid=24442 comm="email" dest=25 scontext=unconfined_u:system_r:fsdaemon_t:s0 tconte
type=SYSCALL msg=audit(1381194023.358:636): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bfaa6010 a2=bfaa6040 a3=3 items=0 ppid=24438 pid=24442 auid=

Да, видимо ты прав, теперь другой вопрос, как это поправить ? выпилить из Centos selinux не получилось. C Centos имею дело впервые.

pavel38
() автор топика
Ответ на: комментарий от pavel38

Чтобы выключить: В /etc/sysconfig/selinux написать SELINUX=«disabled»

После этого необходимо перезагрузить сервер, иначе не выключится.

Другой вариант это создать под него правила для selinux, но это тема для книги скорее.

hidden_4003
()
Ответ на: комментарий от hidden_4003

Чтобы выключить: В /etc/sysconfig/selinux написать SELINUX=«disabled»

Гораздо лучше поставить в permissive и потихоньку разбираться с тем, что появляется в логе, заодно отслеживая, что ничего непредвиденного не происходит.

Другой вариант это создать под него правила для selinux, но это тема для книги скорее.

В большинстве случаев это запуск одной команды: audit2allow, хотя какой-нибудь обзор не мешает прочитать, чтобы понимать в общих чертах что она делает.

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6...

alpha ★★★★★
()
Ответ на: комментарий от alpha

Я знаю что выключать неправильно. Хотя мы прекрасно понимаем из уже показанного отношения что никто не будет разбираться.

Ну я на audit2allow собственно и намекал, но ведь нужно понимать что нужно оставить иначе результат от такой дырявой политики почти аналогичен выключенному.

hidden_4003
()
Ответ на: комментарий от hidden_4003

В принципе проблема временно решена, прописал в /etc/sysconfig/selinux < SELINUX=permissive. Ну а дальше видимо буду изучать selinux, странно за столько времени впервые с ним столкнулся. А всего лишь решил сменить дистр.

pavel38
() автор топика
Ответ на: комментарий от pavel38

permissive от disabled отличается тем что пишет в audit.log

Программы устанавливаемые из репозитория как правило в своем составе уже комплектуются набором правил selinux. У Вас скрипт нигде не прописан, хочет непонятных вещей, отсюда проблема.

hidden_4003
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.