Re: Postfix with home dirs on GPFS

David Sastre <[email protected]> Thu, 27 May 2021 18:38:27 +0200
Newsgroups gmane.linux.redhat.fedora.selinux
Message-ID <CAMfsiJFvgLz3NJkUiZwtvpogpANktpvjYuwvp17T9XccAzE0Zw@mail.gmail.com>
Yes, you need to run restorecon where the filesystem is mounted, as the
SELinux context is understood locally.

On Thu, May 27, 2021 at 5:47 PM Luke Sudbery <[email protected]> wrote:

> Great  - thank you. We had set fcontext equivalence:
>
>
>
> [root@host-name ~]# semanage fcontext -C -l
>
>
>
> SELinux Local fcontext Equivalence
>
>
>
> /var/adm/ras = /var/log
>
> /gpfs-fs/homes/a = /home
>
> /gpfs-fs/homes/b = /home
>
> /gpfs-fs/homes/c = /home
>
> /gpfs-fs/homes/d = /home
>
> /gpfs-fs/homes/e = /home
>
> /gpfs-fs/homes/f = /home
>
> /gpfs-fs/homes/g = /home
>
> /gpfs-fs/homes/h = /home
>
> /gpfs-fs/homes/i = /home
>
> /gpfs-fs/homes/j = /home
>
> /gpfs-fs/homes/k = /home
>
> /gpfs-fs/homes/l = /home
>
> /gpfs-fs/homes/m = /home
>
> /gpfs-fs/homes/n = /home
>
> /gpfs-fs/homes/o = /home
>
> /gpfs-fs/homes/p = /home
>
> /gpfs-fs/homes/q = /home
>
> /gpfs-fs/homes/r = /home
>
> /gpfs-fs/homes/s = /home
>
> /gpfs-fs/homes/t = /home
>
> /gpfs-fs/homes/u = /home
>
> /gpfs-fs/homes/v = /home
>
> /gpfs-fs/homes/w = /home
>
> /gpfs-fs/homes/x = /home
>
> /gpfs-fs/homes/y = /home
>
> /gpfs-fs/homes/z = /home
>
> [root@host-name ~]#
>
>
>
> And run restorecon on one of the home directories itself, but not on the
> paths above it. Doing this seems to have fixed the problem without the need
> for an additional module. In fact it appears to have been the mount point
> of the file system that was the problem, so restorecon needs running on
> every machine.
>
>
>
> Great. But I’m a still bit confused about the need to add home_root_t to
> the new home dir roots and to have the equivalency rule – don’t they
> achieve the same thing?
>
>
>
> Many thanks,
>
>
>
> Luke
>
> --
>
> Luke Sudbery
>
> Architecture, Infrastructure and Systems
>
> Advanced Research Computing, IT Services
>
> Room 132, Computer Centre G5, Elms Road
>
>
>
> *Please note I don’t work on Monday.*
>
>
>
> *From:* [email protected] <[email protected]>
> *Sent:* 27 May 2021 14:19
> *To:* Luke Sudbery (Advanced Research Computing) <[email protected]>
> *Cc:* [email protected]
> *Subject:* Re: Postfix with home dirs on GPFS
>
>
>
> Hello Luke,
>
>
>
> If you are relocating home directories somewhere else (not /home), you
> need to make sure those new home directories are properly labeled. As you
> can see in the AVC denials, those directories/files are unlabeled_t.
>
>
>
> The semanage-fcontext(8) manual page contains an example:
>
>
>
>        # semanage fcontext -a -t home_root_t "/disk6"
>        # semanage fcontext -a -e /home /disk6/home
>        # restorecon -R -v /disk6
>
>
>
> Obviously, you need to replace the paths in the example with the ones on
> your use case.
>
>
>
> Hope that helps.
>
>
>
>
>
>
>
> On Thu, May 27, 2021 at 1:16 PM Luke Sudbery <[email protected]>
> wrote:
>
> Hello,
>
>
>
> With home directories on IBM Spectrum Scale and selinux enabled, postfix
> is unable to deliver locally. This is using RHELS8.3.
>
>
>
> Postfix logs:
>
>
>
> May 27 10:23:20 host-name postfix/local[1245962]: A1219F9E: to=<
> [email protected]>, orig_to=<username>, relay=local,
> delay=0.03, delays=0.01/0.01/0/0.01, dsn=5.2.0, status=bounced (cannot
> update mailbox /gpfs-fs/homes/u/username/Mailbox for user username. unable
> to create lock file /gpfs-fs/homes/u/username/Mailbox.lock: Permission
> denied)
>
>
>
> Although the actual problem is that it can’t/doesn’t read ~/.forward to
> know where to really send the mail.
>
>
>
> Selinux audit logs show:
>
>
>
> type=AVC msg=audit(1622111726.610:10854499): avc:  denied  { search } for
> pid=1315267 comm="local" name="/" dev="gpfs" ino=3
> scontext=system_u:system_r:postfix_local_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0
>
> type=SYSCALL msg=audit(1622111726.610:10854499): arch=c000003e syscall=6
> success=no exit=-13 a0=561f9a316390 a1=7ffdc7e109c0 a2=7ffdc7e109c0 a3=0
> items=0 ppid=3375 pid=1315267 auid=4294967295 uid=0 gid=0 euid=606178
> suid=0 fsuid=606178 egid=100 sgid=0 fsgid=100 tty=(none) ses=4294967295
> comm="local" exe="/usr/libexec/postfix/local"
> subj=system_u:system_r:postfix_local_t:s0 key=(null)ARCH=x86_64
> SYSCALL=lstat AUID="unset" UID="root" GID="root" EUID="username"
> SUID="root" FSUID="username" EGID="users" SGID="root" FSGID="users"
>
> type=AVC msg=audit(1622111726.611:10854500): avc:  denied  { search } for
> pid=1315267 comm="local" name="/" dev="gpfs" ino=3
> scontext=system_u:system_r:postfix_local_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0
>
> type=SYSCALL msg=audit(1622111726.611:10854500): arch=c000003e syscall=4
> success=no exit=-13 a0=561f9a3165c0 a1=7ffdc7e109c0 a2=7ffdc7e109c0 a3=0
> items=0 ppid=3375 pid=1315267 auid=4294967295 uid=0 gid=0 euid=606178
> suid=0 fsuid=606178 egid=100 sgid=0 fsgid=100 tty=(none) ses=4294967295
> comm="local" exe="/usr/libexec/postfix/local"
> subj=system_u:system_r:postfix_local_t:s0 key=(null)ARCH=x86_64
> SYSCALL=stat AUID="unset" UID="root" GID="root" EUID="username" SUID="root"
> FSUID="username" EGID="users" SGID="root" FSGID="users"
>
> type=AVC msg=audit(1622111726.611:10854501): avc:  denied  { search } for
> pid=1315267 comm="local" name="/" dev="gpfs" ino=3
> scontext=system_u:system_r:postfix_local_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0
>
> type=SYSCALL msg=audit(1622111726.611:10854501): arch=c000003e syscall=257
> success=no exit=-13 a0=ffffff9c a1=561f9a316600 a2=c1 a3=0 items=0
> ppid=3375 pid=1315267 auid=4294967295 uid=0 gid=0 euid=606178 suid=0
> fsuid=606178 egid=100 sgid=0 fsgid=100 tty=(none) ses=4294967295
> comm="local" exe="/usr/libexec/postfix/local"
> subj=system_u:system_r:postfix_local_t:s0 key=(null)ARCH=x86_64
> SYSCALL=openat AUID="unset" UID="root" GID="root" EUID="username"
> SUID="root" FSUID="username" EGID="users" SGID="root" FSGID="users"
>
>
>
> audit2allow shows:
>
>
>
> [root@host-name audit]# audit2allow -w -a
>
> type=AVC msg=audit(1622111726.610:10854499): avc:  denied  { search } for
>  pid=1315267 comm="local" name="/" dev="gpfs" ino=3
> scontext=system_u:system_r:postfix_local_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0
>
>         Was caused by:
>
>                 Missing type enforcement (TE) allow rule.
>
>
>
>                 You can use audit2allow to generate a loadable module to
> allow this access.
>
>
>
> type=AVC msg=audit(1622111726.611:10854500): avc:  denied  { search } for
> pid=1315267 comm="local" name="/" dev="gpfs" ino=3
> scontext=system_u:system_r:postfix_local_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0
>
>         Was caused by:
>
>                 Missing type enforcement (TE) allow rule.
>
>
>
>                 You can use audit2allow to generate a loadable module to
> allow this access.
>
>
>
> type=AVC msg=audit(1622111726.611:10854501): avc:  denied  { search } for
> pid=1315267 comm="local" name="/" dev="gpfs" ino=3
> scontext=system_u:system_r:postfix_local_t:s0
> tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=0
>
>         Was caused by:
>
>                 Missing type enforcement (TE) allow rule.
>
>
>
>                 You can use audit2allow to generate a loadable module to
> allow this access.
>
>
>
> [root@host-name audit]# audit2allow -a
>
>
>
>
>
> #============= postfix_local_t ==============
>
> allow postfix_local_t unlabeled_t:dir search;
>
> [root@host-name audit]#
>
>
>
> Creating a module using these rules fixes the problem.
>
>
>
> I’ve also tested creating a user with a home directory with GPFS stopped,
> and using the same path that a GPFS user would have. This worked without
> any selinux changes, and implies this is a problem with home dirs on GPFS,
> rather than just the path itself.
>
>
>
> Should this be reported as a selinux bug?
>
>
>
> Many thanks,
>
>
>
> Luke
>
>
>
> --
>
> Luke Sudbery
>
> Architecture, Infrastructure and Systems
>
> Advanced Research Computing, IT Services
>
> Room 132, Computer Centre G5, Elms Road
>
>
>
> *Please note I don’t work on Monday.*
>
>
>
>
>
> _______________________________________________
> selinux mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> Fedora Code of Conduct:
> https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
> https://lists.fedoraproject.org/archives/list/[email protected]
> Do not reply to spam on the list, report it:
> https://pagure.io/fedora-infrastructure
>
>

_______________________________________________
selinux mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/[email protected]
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure