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?
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? –
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? –
Le système de fichiers source est ext4, monté sur/mnt/shared. Le système de fichiers de destination (racine) est ext3. –