Bonjour,

J'ai déjà essuyé quelques problèmes avec BackupPC et SElinux... C'était avec BackupPC version 2.1.2, et j''avais réussi à les résoudre.

Depuis lors, je suis passé à la version 3.0.0 de BackupPC (installation manuelle, le paquet n'est pas disponible dans les dépôts) qui a fonctionné jusqu'à la dernière mise à jour de SELinux. Depuis lors, un backup avec rsync sur le localhost donne les erreurs suivantes :

Dans /var/log/messages :
Jun 16 10:00:04 odysseus setroubleshoot:      SELinux is preventing /usr/bin/rsync (rsync_t) "read write" access to socket:[211766] (initrc_t).      For complete SELinux message
s. run sealert -l cc632b8a-adeb-4fee-b7e7-3ef9a52fd12b
Jun 16 10:00:04 odysseus setroubleshoot:      SELinux is preventing rsync (/usr/bin/rsync) "search" to lib (var_lib_t).      For complete SELinux messages. run sealert -l 9da38c
1b-5d85-4cb4-91df-33d7d4177785
Le résultat du premier sealert :
# sealert -l cc632b8a-adeb-4fee-b7e7-3ef9a52fd12b
Summary
    SELinux is preventing /usr/bin/rsync (rsync_t) "read write" access to
    socket:[211766] (initrc_t).

Detailed Description
    SELinux denied access requested by /usr/bin/rsync. It is not expected that
    this access is required by /usr/bin/rsync and this access may signal an
    intrusion attempt. It is also possible that the specific version or
    configuration of the application is causing it to require additional access.
    Please file a http://bugzilla.redhat.com/bugzilla/enter_bug.cgi against this
    package.

Allowing Access
    Sometimes labeling problems can cause SELinux denials.  You could try to
    restore the default system file context for socket:[211766], restorecon -v
    socket:[211766]. There is currently no automatic way to allow this access.
    Instead, you can generate a local policy module to allow this access - see
    http://fedora.redhat.com/docs/selinux-faq-fc5/#id2961385 - or you can
    disable SELinux protection entirely for the application. Disabling SELinux
    protection is not recommended. Please file a
    http://bugzilla.redhat.com/bugzilla/enter_bug.cgi against this package.
    Changing the "rsync_disable_trans" boolean to true will disable SELinux
    protection this application: "setsebool -P rsync_disable_trans=1."

    The following command will allow this access:
    setsebool -P rsync_disable_trans=1

Additional Information:

Source Context:               system_u:system_r:rsync_t
Target Context:               system_u:system_r:initrc_t
Target Objects:               socket:[211766] [ unix_stream_socket ]
Affected RPM Packages:        rsync-2.6.9-2.fc6 [application]
Policy RPM:                   selinux-policy-2.4.6-74.fc6
Selinux Enabled:              True
Policy Type:                  targeted
MLS Enabled:                  True
Enforcing Mode:               Enforcing
Plugin Name:                  plugins.disable_trans
Host Name:                    odysseus
Platform:                     Linux odysseus 2.6.20-1.2952.fc6 #1 SMP Wed May 16 18:59:18 EDT 2007 i686 i686
Alert Count:                  1
Line Numbers:

Raw Audit Messages:

avc: denied { read, write } for comm="rsync" dev=sockfs egid=0 euid=0 exe="/usr/bin/rsync" exit=0 fsgid=0 fsuid=0 gid=0 items=0 name="[211766]" path="socket:[211766]" pid=31025 scontext=system_u:system_r:rsync_t:s0 sgid=0 subj=system_u:system_r:rsync_t:s0 suid=0 tclass=unix_stream_socket tcontext=system_u:system_r:initrc_t:s0 tty=(none) uid=0
Et le second :
# sealert -l 9da38c1b-5d85-4cb4-91df-33d7d4177785
Summary
    SELinux is preventing rsync (/usr/bin/rsync) "search" to lib (var_lib_t).

Detailed Description
    SELinux denied rsync access to lib. If this is a RSYNC repository it has to
    have a file context label of rsync_data_t. If you did not intend to use lib
    as a rsync repository it could indicate either a bug or it could signal a
    intrusion attempt.

Allowing Access
    You can alter the file context by executing chcon -R -t rsync_data_t lib

    The following command will allow this access:
    chcon -R -t rsync_data_t lib

Additional Information:

Source Context:               system_u:system_r:rsync_t
Target Context:               system_u:object_r:var_lib_t
Target Objects:               lib [ dir ]
Affected RPM Packages:        rsync-2.6.9-2.fc6 [application]filesystem-2.4.0-1 [target]
Policy RPM:                   selinux-policy-2.4.6-74.fc6
Selinux Enabled:              True
Policy Type:                  targeted
MLS Enabled:                  True
Enforcing Mode:               Enforcing
Plugin Name:                  plugins.rsync_data
Host Name:                    odysseus
Platform:                     Linux odysseus 2.6.20-1.2952.fc6 #1 SMP Wed May 16 18:59:18 EDT 2007 i686 i686
Alert Count:                  11
Line Numbers:

Raw Audit Messages:

avc: denied { search } for comm="rsync" dev=dm-0 egid=0 euid=0 exe="/usr/bin/rsync" exit=-13 fsgid=0 fsuid=0 gid=0 items=0 name="lib" pid=31025 scontext=system_u:system_r:rsync_t:s0 sgid=0 subj=system_u:system_r:rsync_t:s0 suid=0 tclass=dir tcontext=system_u:object_r:var_lib_t:s0 tty=(none) uid=0
La solution proposée dans le premier sealert ne fonctionne pas :
# restorecon -v socket:[211766]
lstat(socket:[211766]) failed: No such file or directory
Celle du second, je ne sais pas trop... Sur quel répertoire "lib" veut-il que j'applique le chcon ? Bref, je suis un peu coincé...

Il est à noter que le backup de cet hôte fonctionne depuis la ligne de commande, les denial SELinux n'aparaissent que lorsque l'appel est effectué par l'interface web. ou automatiquement par le démon. Je précise également que le Backup d'un autre PC sur le réseau via Rsync (qui est aussi sous fc6, SELinux activé) fonctionne parfaitement.
12 jours plus tard
Un petit up pour simplement signaler que le problème s'est résolu de lui même avec la récente sortie de la version 2.4.6-75 des "policy" SELinux.
Zut, on ne sait pas à quoi c'était dû alors. J'essaie de suivre d'assez près tout ce qui concerne BackupPC. Il est vrai qu'en générale je coupe SElinux car j'ai toujours des soucis avec, j'aurai donc aimé savoir, tant pis 🙂
mise à jours des règles à tout les coups! après il devient de plus en plus simple à s'y faire à selinux! manque plus qu'une documentation en français...
23 jours plus tard
Depuis la dernière mise à jour, de nouveau des problèmes avec SELinux. Cette fois, le sealert était plus parlant ; la commande magique est :
setsebool -P rsync_disable_trans=1
Cela devrait je pense éviter pas mal de soucis...

@cerber666 : désactiver SELinux n'est généralement pas nécessaire ; BackupPC est le seul programme avec lequel j'ai encore de "gros" soucis à cause de lui. La majorité du temps, les problèmes SELinux proviennent de fichiers qui ne sont pas labellés correctement, un "restorecon -R -v" résoud beaucoup de choses.

@VINDICATORs : une doc en fr... tu t'y colles ?? :-D