2017-05-09 4 views
0

Afin de configurer mon système CentOS, je voudrais écraser un fichier arbitraire en préservant presque tous les attributs sauf l'horodatage et le contenu.CentOS7: copie le fichier et conserve le contexte SELinux

À titre d'exemple, je vais utiliser /etc/phpMyAdmin/config.inc.php

Remarque: le fichier en cours de copie est dans un autre système de fichiers

[[email protected] phpMyAdmin]# ls -laZ /etc/phpMyAdmin/ 
drwxr-x---. root apache system_u:object_r:etc_t:s0  . 
drwxr-xr-x. root root system_u:object_r:etc_t:s0  .. 
-rw-r-----. root apache system_u:object_r:etc_t:s0  config.inc.php 
[[email protected] phpMyAdmin]# /bin/cp -frv --backup=numbered --preserve=mode,ownership,context,xattr config.inc.php /etc/phpMyAdmin/config.inc.php 
«config.inc.php» -> «/etc/phpMyAdmin/config.inc.php» (respaldo: «/etc/phpMyAdmin/config.inc.php.~1~») 
[[email protected] phpMyAdmin]# ls -laZ /etc/phpMyAdmin/ 
drwxr-x---. root apache system_u:object_r:etc_t:s0  . 
drwxr-xr-x. root root system_u:object_r:etc_t:s0  .. 
-rw-r-----. root apache system_u:object_r:unlabeled_t:s0 config.inc.php 
-rw-r-----. root apache system_u:object_r:etc_t:s0  config.inc.php.~1~ 
[[email protected] phpMyAdmin]# systemctl restart httpd 

Quand j'ai essayé http://localhost/phpmyadmin, le temps poing je reçois un avertissement sur SELinux, et Apache peut » t accéder au fichier.

[[email protected] phpMyAdmin]# chcon --reference /etc/phpMyAdmin/config.inc.php.~1~ /etc/phpMyAdmin/config.inc.php 
[[email protected] phpMyAdmin]# ls -laZ /etc/phpMyAdmin/ 
drwxr-x---. root apache system_u:object_r:etc_t:s0  . 
drwxr-xr-x. root root system_u:object_r:etc_t:s0  .. 
-rw-r-----. root apache system_u:object_r:etc_t:s0  config.inc.php 
-rw-r-----. root apache system_u:object_r:etc_t:s0  config.inc.php.~1~ 
[[email protected] phpMyAdmin]# systemctl restart httpd 

Maintenant apache peut lire le fichier.

Comment puis-je faire en sorte que cp préserve le contexte SELinux du fichier d'origine?

Répondre

0

Selon la documentation cp, le commutateur "--preserve = context" permet de copier aussi le contexte Selinux pendant le processus.

S'il vous plaît allez voir cette excellente documentation Redhat, il explique le sujet à merveille dans un langage humain:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-Maintaining_SELinux_Labels_.html

+0

J'ai essayé beaucoup d'options de cp (ceux qui sont indiqués dans le lien), - preserve = context et --no-preserve = context, mais le résultat est toujours le même, apache ne peut pas utiliser le fichier et l'attribut ** unlabeled_t ** est défini. Seulement en utilisant chcon après la copie apache peut utiliser le fichier. Peut-être un bug dans cp? –

+0

Salut Carlos, est le fichier de destination sur un autre système de fichiers? Quel type de système de fichiers? Où montez-vous le volume? –

+0

Le système de fichiers source est ext4, monté sur/mnt/shared. Le système de fichiers de destination (racine) est ext3. –