I'm trying to chase down an AVC message coming from procmail. I'm having a
problem figuring out how to research, troubleshoot, or fix bad FIFO pipe
contexts.
The AVC I get is:
Aug 6 12:15:52 basement kernel: type=1400 audit(1312647352.712:9623): avc:
denied { write } for pid=9816 comm="procmail" path="pipe:[4235]" dev=pipefs
ino=4235 scontext=system_u:system_r:procmail_t
tcontext=system_u:system_r:postfix_master_t tclass=fifo_file
The problem appears to be that the FIFO objects that postfix's master process
is creating aren't getting the correct security context:
basement ~ # lsof -Z | grep pipe | grep 4235
master 2069 system_u:system_r:postfix_master_t root 94r
FIFO 0,7 0t0 4235 pipe
master 2069 system_u:system_r:postfix_master_t root 95w
FIFO 0,7 0t0 4235 pipe
qmgr 2074 system_u:system_r:postfix_qmgr_t postfix 94r
FIFO 0,7 0t0 4235 pipe
qmgr 2074 system_u:system_r:postfix_qmgr_t postfix 95w
FIFO 0,7 0t0 4235 pipe
tlsmgr 2178 system_u:system_r:postfix_master_t postfix 94r
FIFO 0,7 0t0 4235 pipe
tlsmgr 2178 system_u:system_r:postfix_master_t postfix 95w
FIFO 0,7 0t0 4235 pipe
pickup 9273 system_u:system_r:postfix_pickup_t postfix 94r
FIFO 0,7 0t0 4235 pipe
pickup 9273 system_u:system_r:postfix_pickup_t postfix 95w
FIFO 0,7 0t0 4235 pipe
Procmail doesn't have access to the postfix_master_t domain, but it does have
access to this:
basement ~ # sesearch --allow -sprocmail_t -cfifo_file
Found 4 semantic av rules:
allow procmail_t postfix_local_t : fifo_file { ioctl read write getattr lock
append open } ;
allow procmail_t postfix_pipe_t : fifo_file { ioctl read write getattr lock
append open } ;
allow procmail_t user_home_t : fifo_file { ioctl read write create getattr
setattr lock append unlink link rename open } ;
allow procmail_t procmail_t : fifo_file { ioctl read write getattr lock
append open } ;
So, I'm assuming that postfix's FIFOs ought to be one of those two:
postfix_local_t or postfix_pipe_t. Since procmail's being used here as the
local
delivery agent I was guessing postfix_local_t. But I can't figure out where
that
is supposed to happen. Is that something postfix is required to do manually, or
should there be a transition rule for it? (sesearch didn't show any trans
rules for either of those types.)
--Mike