Why does cp --no-preserve=mode preserves the mode? Alternative tools available?

In case you are using GNU coreutils. This is a bug which is fixed in version 8.26.


So the alternative tool would be an up-to-date coreutils, or for example rsync which is able to do that even with preserving permissions:

$ rsync -a --relative  /sys/power/state /tmp/test
$ rsync -a --relative  /sys/bus/cpu/drivers_autoprobe /tmp/test/

Though I see rsync has other problems for this particular sysfs files, see rsync option to disable verification?

Another harsh workaround would be to chmod all the dirs after each cp command.

$ find /tmp/test -type d -exec chmod $(umask -S) {} \;

(The find/chmod command above would also not work for any combination of existing permissions and umask.)

BTW you could report this bug to your Linux-Distribution and they might fix your 8.21 package via maintenance updates.