diff -urNp coreutils-8.12-orig/src/copy.c coreutils-8.12/src/copy.c --- coreutils-8.12-orig/src/copy.c 2011-08-11 16:05:15.432485738 +0200 +++ coreutils-8.12/src/copy.c 2011-08-11 16:14:28.660360607 +0200 @@ -850,7 +850,7 @@ copy_reg (char const *src_name, char con 1) the src context may prohibit writing, and 2) because it's more consistent to use the same context that is used when the destination file doesn't already exist. */ - if (x->preserve_security_context && 0 <= dest_desc) + if ((x->set_security_context || x->preserve_security_context) && 0 <= dest_desc) { bool all_errors = (!x->data_copy_required || x->require_preserve_context); diff -urNp coreutils-8.12-orig/src/cp.c coreutils-8.12/src/cp.c --- coreutils-8.12-orig/src/cp.c 2011-08-11 16:05:15.435486976 +0200 +++ coreutils-8.12/src/cp.c 2011-08-11 16:16:56.408644526 +0200 @@ -1119,6 +1119,7 @@ main (int argc, char **argv) exit( 1 ); } x.set_security_context = true; + (void) fprintf(stderr, _("Warning, -Z/--context option is deprecated and will be removed soon!\nPlease use 'install' utility instead of cp for this functionality.\n")); /* if there's a security_context given set new path components to that context, too */ if ( setfscreatecon(optarg) < 0 ) {