svnserve mit Selinux auf NFS-Mount kann nicht gestartet werden (Centos8)

svnserve mit Selinux auf NFS-Mount kann nicht gestartet werden (Centos8)

ist vielleicht eine dumme Frage. Ich kämpfe mit meinem Subversion-Server auf einem Centos8 mit erzwungenem Selinux. Wir haben eine NFS-Einbindung zum Speichern der Daten ( /mnt/data/svn).

Das Problem (wenn Selinux im Durchsetzungsmodus ist) besteht darin, dass der Dienst nicht gestartet wird, da er nicht über die erforderlichen Zugriffsberechtigungen verfügt /mnt/data/svn:

> service svnserve start # error
> journalctl -xe

systemd[1]: Starting Subversion protocol daemon...
-- Subject: Unit svnserve.service has begun start-up
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
-- 
-- Unit svnserve.service has begun starting up.
... svnserve[2445049]: svnserve: E000013: Can't check path '/mnt/data/svn': Permission denied
... systemd[1]: svnserve.service: Control process exited, code=exited status=1
... systemd[1]: svnserve.service: Failed with result 'exit-code'.
... systemd[1]: Failed to start Subversion protocol daemon.

SVN-Umgebung: /etc/sysconfig/svnserve:

OPTIONS="-r /mnt/data/svn"

Verzeichnisberechtigungen: Rekursiv ...

drwxr-xr-x. 36 svn svn 4096 Nov 17 16:40 /mnt/data/svn

SE-Konfiguration: über semanage

> semanage fcontext -l | egrep "/mnt/data/svn"
/mnt/data/svn           all files          system_u:object_r:svnserve_content_t:s0 
/mnt/data/svn(/.*)?    all files          system_u:object_r:svnserve_content_t:s0 

SE-Kontexttyp

> ls -ldaZ /mnt/data/svn
drwxr-xr-x. 36 svn svn system_u:object_r:nfs_t:s0 4096 Nov 17 16:40 /mnt/data/svn

Ohne Selinux enforcedfunktioniert alles wie erwartet. Das Problem: kann keinen svnserve_content_tTyp zu /mnt/data/svnvia hinzufügen semanage:

chcon -Rv --user system_u /mnt/data/svn             # fine
chcon -Rv --type svnserve_content_t /mnt/data/svn   # fails

Scheint snvserve_content_tungültig zu sein, oder ich kann es nicht gleichzeitig zuweisen nfs_t. svnserve_content_tMir gehen die guten Ideen aus. Es gibt höchstwahrscheinlich eine super einfache Lösung und ich freue mich schon jetzt über jede Idee (das Deaktivieren der Selinux-Durchsetzung ist keine Option).

Vielen Dank im Voraus,

R

Antwort1

Meine Lösung

Das Prüfprotokoll zeigt tatsächlich, was schief gelaufen ist:

type=AVC msg=audit(1606892987.322:161301): avc:  denied  { search } for  pid=2570843 comm="svnserve" name="/" dev="0:46" ino=2131353823 scontext=system_u:system_r:svnserve_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir permissive=0

Keine Berechtigung für searchdie Verzeichnisse. Meine Lösung bestand darin, ein benutzerdefiniertes Selinux-Richtlinienmodul/eine benutzerdefinierte Selinux-Richtlinienregel zu schreiben:

module svnserve_nfs 1.0;

require {
        type svnserve_t;
        type nfs_t;
        class dir { getattr search read write };
        class file { getattr unlink append open read setattr write lock create rename };
}

#============= svnserve_t ==============
allow svnserve_t nfs_t:dir { getattr search read write };
allow svnserve_t nfs_t:file { getattr unlink append open read setattr write lock create rename };

... geprüft, kompiliert, installiert, funktioniert. Könnte etwas restriktiver sein, aber im Moment bin ich zufrieden, dass es wie erwartet funktioniert.

verwandte Informationen