execv(/usr/sbin/sendmail) failed: Permission denied

Fórumok

Sziasztok!

A múlt héten volt egy olyan problémám, hogy a systemd-login.d betöltése nem sikerült egy levelező szerver újraindítás után. Ez miatt nem indult el a postfix. Próbáltam megjavítani, de elég kilátástalannak tűnt a helyzet ezért egy új merevlemezre újra telepítettem egy virtual domain-es levelező rendszert. Az eredeti szerverből kivettem a /var kötetet. Mielőtt felmountoltam volna ellenőríztem az uid-kat, és a gideket. Ahol eltérés volt a régi szerver és az új között, ott minden uid-t és gid-et beállítottam úgy, ahogy a régi szerveren volt. Beigazítottam a file-ok és a könyvtárak jogosultságait. Ezután felmountoltam a régi /var kötet az új szerverben. Pár dolgon apróbb változtatások kellettek, de nagyjábol minden megy. 

Egy valamivel viszont gondom van, a sendmail-el. Az akarmi@akarmi.hu usernek sieve-vel be van állítva, hogy automatikusan válaszoljon az e-mailre, ami neki jön. A mail.logban ezt látom:

Jun 22 14:44:12 host dovecot: lda(akarmi@akarmi.hu): Fatal: execv(/usr/sbin/sendmail) failed: Permission denied
Jun 22 14:44:12 ujmx4 host: lda(akarmi@akarmi.hu): Error: Sendmail process terminated abnormally, exit status 75
Jun 22 14:44:12 ujmx4 host: lda(akarmi@akarmi.hu): Error: sieve: msgid=<30dfd1a2-343e-bdd8-6f5a-f71b87d393e4@akarmi.hu>: failed to send vacation response to <valaki@valami.hu> (refer to server log for more information)

A sendmail jogosultságai a következők:

root@host:/var/spool/postfix# ls -l /usr/sbin/sendmail
-rwxr-xr-x 1 root root 26680 ápr   29  2017 /usr/sbin/sendmail

Ezek szerint mindenkinek van jog futtatni a sendmail-t. Parancssorból root-tal tudok e-mail-t küldeni sendmail segítségével, de sima mezei userként nem.

A /usr/sbin/postfix set-permissions-t már lefuttatam. Van valakinek még ötlete?

Köszi!

Hozzászólások

Adj az other-nek teljes jogot, ne csak futtatasit (rwx).

Parancsolj: 

ll /usr/sbin/sendmail
lrwxrwxrwx. 1 root root 21 Apr 28 09:13 /usr/sbin/sendmail -> /etc/alternatives/mta

Soha nem nyultam hozza, igy telepult (CentOS).

De megneztem egy masik szerveremen is, detto (szinten CentOS):

ll /usr/sbin/sendmail
lrwxrwxrwx. 1 root root 21 May 27 16:28 /usr/sbin/sendmail -> /etc/alternatives/mta

Kivancsisagbol megneztem egy ceges RHEL-t is (csak RHEL-alapu szerverekkel dolgozom), nyilvan pontosan ugyanigy van. Szoval ez a default, gyari telepites, igy meg egyszer, pontosan mi is a problema? Nem veletlenul telepul igy, nem az elvvel vitatkozom, amit mondasz, de ismet, ez a default.

Tisztaban vagyok vele, raadasul az is csak egy symlink, a valodi, amire a /etc/alternatives/mta mutat, a sendmail.postfix az ez:

ll /usr/sbin/sendmail.postfix 
-rwxr-xr-x. 1 root root 247920 Apr  1 06:09 /usr/sbin/sendmail.postfix

Attol meg a hivatkozott /usr/sbin/sendmail ugy nez ki, amit leirtam.

Háttöö.. na.

A link jogai nem állíthatóak, az fixen 777.

A binárisé állíthatóak.

Ha azt tanácsolod, hogy más a bináris jogait a te linkednek megfelelően állítsa mindenki számára írhatóvá, akkor... akkor inkább ne adjál tanácsot másnak, ha javasolhatom. Bocs a kendőzetlen véleményemért, de ez azért "vak vezet világtalant" kategória.

OT:

> A link jogai nem állíthatóak, az fixen 777.

Azért vannak oprendszerek, ahol igen :-) chmod  - különösen a -h opciót javasolnám figyelmedbe. (OK, kb nulla értelme van, csak hogy ne lepődj majd meg.)

/OT

$ ll la li
-rw-r--r--  1 zgabor  zgabor  - 12762 jún.   22 21:11 la
lrwxr-xr-x  1 zgabor  zgabor  -     2 jún.   22 21:21 li@ -> la
$ chmod g+w li
$ ll la li
-rw-rw-r--  1 zgabor  zgabor  - 12762 jún.   22 21:11 la
lrwxr-xr-x  1 zgabor  zgabor  -     2 jún.   22 21:21 li@ -> la
$ chmod -h o+w li
$ ll la li
-rw-rw-r--  1 zgabor  zgabor  - 12762 jún.   22 21:11 la
lrwxr-xrwx  1 zgabor  zgabor  -     2 jún.   22 21:21 li@ -> la
$

Attól még úgy néz ki, csak érvként az ügyben, hogy hogyan milyen jogokkal van telepítve a sendmail irreleváns, mint lentebb írták.

Szóval for the record a többieknek, épp itt mutatod, hogy a valódi sendmailt nem lehet írni nem rootnak, mert nincs rajta írási joga a rooton kívül másnak.

Nem lehetséges, hogy a conf fájlok jogaival van probléma és sima felhasználóként nem férsz hozzájuk?

strace-vel megneznem, hogy pontosan mihez nem fer hozza.

Megnéztem az strace-el a sendmait. A lenti fájlokat akarja megnyitni. Egyesével leellenőriztem. Mind megvan, és mind olvasaható bárki által. Esetlrg más meg tudok még nézni az strace-szel?

root@host:~# strace -e open sendmail
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libpostfix-global.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/libpostfix-util.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libsasl2.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libdb-5.3.so", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
open("/etc/postfix/main.cf", O_RDONLY)  = 4
open("/etc/postfix/dynamicmaps.cf", O_RDONLY) = 4
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 4
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
open("/lib/x86_64-linux-gnu/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 4
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
open("/lib/x86_64-linux-gnu/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 4
open("/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 4
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
open("/etc/group", O_RDONLY|O_CLOEXEC)  = 4
open("/etc/group", O_RDONLY|O_CLOEXEC)  = 4
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4
 

Mondjuk userként nézz meg egy küldést strace-val :) Ne root-al amire azt írtad, hogy megy.

De ahogy itt lentebb is írták, itt a dovecot LDA cucc akarja hívogatni a sendmailt. Viszont dovecot /var * alól használ elég sok dolgot, ott tuti jók lettek a beállítások UID/GID és egyéb jogosultságok ?
Mert ha jól értem, akkor a régi rendszerből hozott /var* -t úgy ahogy van becsatoltad az új rendszer alá. Itt azért szerintem mászkálhattak el permissionök erre-arra. De csak tipp.

pl /var/spool/* (postfix elsősorban) jogoknál szétnéznék, esetleg /var/run/* egyebek.

Esetleg dovecot loglevel növelés, bár az nem sokat segít ebben az esetben. Többi logba is szétnézni, nem csak a mail.log-ba. Hátha mégis van valahol valami selinux/apparmor/francsetudjami.

chroot* nem kavarhat bele ?

Más ötlet nincs.

Parancssorból root-tal tudok e-mail-t küldeni sendmail segítségével, de sima mezei userként nem.

Valószínű a használt disztribúciód/MTA-d alapbeállítása az, hogy csak a rootnak engedi meg, hogy levelet küldjön authentikáció nélkül. Mindenki más meg menjen szépen az SMTP portra, és authentikáljon. Ezt jó eséllyel valami fájl/könyvtárjogosultságokkal éri el.

a) opció, hogy megkeresed, ez a beállítás hol van, és kikapcsolod, azaz minden felhasználónak megengeded a gépeden, hogy küldjön levelet (tipikusan ezt egy setuid root vagy setgid valamilyen group beállítással szokták megoldani)

b) opció, hogy nem általánosan kapcsolod ki, hanem csak annak a usernek, akinek a nevében fut a küldő processz a dovecot alatt (ez azért trükkösebb feladat lehet)

c) opció, hogy csinálsz erre a célra egy SMTP felhasználót, és a dovecot-nak egy olyan sendmail binárist adsz, amelyik SMTP-n keresztül akarja kiküldeni a levelet, a megadott felhasználóval és jelszóval bejelentkezve

Nem akarok izé lenni de nem a dovecot mondta hogy nem lehet neki sendmail-t futtatni? Gondolom a hostnév azért az mert az is fut rajta. abból másik verzióval próbálkoztál már?

Jun 22 14:44:12 host dovecot: lda(akarmi@akarmi.hu): Fatal: execv(/usr/sbin/sendmail) failed: Permission denied