Chcon returns 1 when context not changed without verbose (-v) but with verbose it says the context not changed and returns 0. I read the source code and the problem is VERBOSE is included when checking for error. Reference: BusyBox Implementation: http://git.busybox.net/busybox/plain/selinux/chcon.c Coreutils (near official) Implementation: http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob_plain;f=src/chcon.c;h=bdf6137314fd95fa1f7e7852637bb2332a69f5fd;hb=HEAD