Bonjour,

Je rencontre quelques soucis pour installer un serveur de sauvegarde BackupPC sur ma fc5.
Les problèmes sont dus à SELinux (quelques avc:denied dans le log).

En gros, il y a un fichier que je n'arrive pas à lire pour accéder à l'interface CGI (en perl), que je parviens à contourner en désactivant selinux pour le démon httpd.
Par contre, une seconde erreur survient lors de la sauvegarde en elle même, via rsync (ce qui vous en conviendrez est un peu plus gênant).
Il semble que des restrictions selinux s'appliquent sur la lecture des fichiers via rsync.

L'utilisateur qui lance la sauvegarde se nomme backuppc, puis il fait un sudo (nécessaire car les sauvegardent s'opèrent sur /var /etc /root et /home) pour lancer la commande rsync, c'est à ce moment là que selinux bloque encore, cette fois à cause de rsync.
Cette erreur, je pense, est relative à un changement de selinux pour la fc5 :
(issu de la faq selinux-fc5 : http://fedora.redhat.com/docs/selinux-faq-fc5/#id2963473)
"[...] Now, su/sudo only change the Linux identy. You will need to use newrole to change the SELinux identity, role, or level. [...]"

Le "gros problème", c'est que j'ai dû désactiver complètement selinux sur mon système, c'est tout de même dommage de devoir choisir entre mes sauvegardes et selinux, j'aurai préféré que les deux fonctionnent de front (c'était le cas sous fc3 et fc4)..
Les solutions de la faq selinux ne m'ont pas grandement aidé dans ce problème 🙁

Merci d'avance pour toute contribution 🙂
active selinux et teste ceci
su -
 setsebool -P rsync_disable_trans=1
Si je recherche ce qui peut concerner rsync dans la politique selinux je trouve ceci
getsebool -a |grep rsync
allow_rsync_anon_write --> off
rsync_disable_trans --> off
Pour activer désactiver la rubrique dans la politique selinux

'setsebool -P <rubrique>=0|1' soit Off|On .
Dans l'exemple ci-dessus cela revient à activer l'autorisation de ne plus protéger le démon rsync avec selinux.

Pour lister toutes le rubriques 'getsebool -a'


🙂
Merci celmir, j'avais bien vu le allow_rsync_anon_write dans system-config-securitylevel, mais pas le second.

Je vais tenter le coup puis ré essayer.

Il n'existe pas une petite commande du genre pour mon problème de script perl ?

🙂
En effet, il semble que cela résolve le problème de rsync.
Encore une fois mille merci celmir pour ta précieuse aide 🙂
J'avais vu le premier mais pas le second dans une doc hier.

Quelqu'un aurait-il une idée pour le problème posé par le script cgi ?
L'erreur exacte est la suivante :
Jun 28 02:11:35 odysseus kernel: audit(1151453495.006:29): avc: denied { getattr } for pid=2549 comm="httpd" name="config.pl" dev=hdb1 ino=16744720 sconte
xt=system_u:system_r:httpd_t:s0 tcontext=user_u:object_r:mnt_t:s0 tclass=file

mais j'avoue humblement que je n'ai pas la moindre idée de ce qui cause le problème 🙁
Merci beaucoup.
essaye ceci
restorecon -v -R <chemin absolu>
chcon -R -h -t httpd_sys_content_t <chemin absolu>
Où <chemin absolu> est le chemin complet vers ton script. Par exemple '/var/www/cgi-bin'
Une fois encore celmir, tu fais des merveilles 😃

Cela a bien résolu le problème avc:denied sur les fichiers incriminés (en fait, j'ai lancé les commandes sur le répertoire backuppc).

Mais ce ne sera pas aussi simple d'avoir l'interface cgi fonctionnelle 😉
Un autre problème est survenu :
Jun 28 13:15:03 odysseus kernel: audit(1151493303.450:533): avc:  denied  { write } for  pid=14133 comm="httpd" name="BackupPC.sock" dev=hdb1 ino=16744459 scontext=user_u:system_r:httpd_t:s0 tcontext=user_u:object_r:httpd_sys_content_t:s0 tclass=sock_file
Jun 28 13:15:03 odysseus kernel: audit(1151493303.450:534): avc:  denied  { getattr } for  pid=14133 comm="httpd" name="backuppc" dev=dm-0 ino=58787844 scontext=user_u:system_r:httpd_t:s0 tcontext=system_u:object_r:initrc_exec_t:s0 tclass=file
Le fichier BackuPC.sock se trouve dans le répertoire de backuppc.

Merci beaucoup 🙂
Précision quant au problème ci dessus : sur une discussion de la mailing list fedora-selinux (problèmes similaires), voici ce qui est dit :
Why is everything labeled httpd_sys_script_exec_t?
Only the beginning script should be, these files should be labeled
httpd_sys_content_t, to get rid of most of the warnings. The sock_file
will require a policy update although you can label it httpd_var_run_t
for a workaround.
Ce qui recoupe la solution de celmir pour le problème config.pl, j'avais effectivement déjà vu ce post, mais je ne n'ai pas titlé.
Par contre, en ce qui concerne le fichier .sock, si je tente ceci :
chcon -R -h -t httpd_var_run_t /media/secondary/backups/log/BackupPC.sock
J'obtiens les erreurs suivantes :
Jun 28 13:22:15 odysseus kernel: audit(1151493735.717:537): avc:  denied  { connectto } for  pid=14281 comm="httpd" name="BackupPC.sock" scontext=user_u:system_r:httpd_t:s0 tcontext=user_u:system_r:initrc_t:s0 tclass=unix_stream_socket
Jun 28 13:22:15 odysseus kernel: audit(1151493735.721:538): avc:  denied  { getattr } for  pid=14281 comm="httpd" name="backuppc" dev=dm-0 ino=58787844 scontext=user_u:system_r:httpd_t:s0 tcontext=system_u:object_r:initrc_exec_t:s0 tclass=file
En gros l'avc:denied ne porte plus sur write mais sur connectto 🙁

Merci 🙂
teste ceci :
setsebool -P httpd_can_network_connect=1
Ca ne change rien, toujours les mêmes messages d'erreur (wrtie sur BackupPC.sock et getattr sur backuppc) 🙁
Je sais pas trop quoi te conseiller maintenant 🙁

Je te suggère néanmoins d'explorer le mode d'apprentissage de selinux pour autoriser spécifiquement ce qui te bloque :

http://fedora.redhat.com/docs/selinux-faq-fc5/#id2961385

Je pense qu'il doit exister une solution plus simple, tu peux encore explorer certaines autorisations selinux telles que :
allow_httpd_anon_write
allow_httpd_sys_script_anon_write
httpd_builtin_scripting
httpd_can_network_connect
httpd_can_network_connect_db
httpd_can_network_relay
httpd_disable_trans
httpd_enable_cgi
httpd_enable_ftp_server
httpd_enable_homedirs
httpd_ssi_exec
httpd_suexec_disable_trans
httpd_tty_comm
httpd_unified
tu peux aussi jeter un oeil ICI
Salut,

Merci beaucoup celmir pour tes conseils 🙂
Les explications que tu m'as fournies m'on permi de comprendre (au moins un peu) ce qui clochait, et surtout comment y remédier !

En ce qui concerne les booléens, seul (désactiver selinux pour le démon httpd) fonctionne.
/usr/sbin/setsebool -P httpd_disable_trans=0
Je ne me suis pour le moment pas intéressé aux possibilités de 'audit2allow', persuadé qu'il devrait exister une solution plus simple, j'y viendrais en dernier recours.

Néanmoins, il reste toujours possible (si je ne veux pas désactiver selinux pour httpd) d'activer le booléen en question quand je souhaite accéder à l'interface cgi (les sauvegardes en elles mêmes fonctionnent, c'est le principal), pour le désactiver de nouveau ensuite...

Je continue de chercher un peu avant de m'avouer vaincu 🙂