Subject: cp does not preserve SElinx context of sub folder

From: HE Henry <[email-masked]>
Date: Fri, 6 Jan 2017 08:19:11 +0000

Hi coreutils team,

When using cp with --parents options, the SELinux context of sub folders are not preserved.

Example as below:

1. Before using cp:
[root@oame0 etc]# pwd
/etc
[root@oame0 etc]# ls -Z selinux/
-rw-r--r--. root root system_u:object_r:selinux_config_t:s0 config
-rw-r--r--. root root system_u:object_r:selinux_config_t:s0 semanage.conf
drwxr-xr-x. root root system_u:object_r:selinux_config_t:s0 targeted
[root@oame0 etc]#  ls -Z -d selinux/
drwxr-xr-x. root root system_u:object_r:selinux_config_t:s0 selinux/

2. Using cp to copy /etc/selinux/targeted/seusers with full path to /tmp
[root@oame0 etc]# cp -r --preserve=context --parents selinux/targeted/seusers  /tmp

3. After using cp, the SELinux context of sub folder are changed, like selinux, targeted 

[root@oame0 etc]# ls -Z /tmp/selinux/
drwx------. root root unconfined_u:object_r:user_tmp_t:s0 targeted
[root@oame0 etc]# ls -Z -d /tmp/selinux/
drwx------. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/selinux/
[root@oame0 etc]# ls -Z -d /tmp/selinux/targeted/
drwx------. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/selinux/targeted/
[root@oame0 etc]# ls -Z /tmp/selinux/targeted/   
-rw-------. root root system_u:object_r:selinux_config_t:s0 seusers

Thanks,
Henry