cp /dev/null
I am always puzzled when people do
$ mv file.txt /dev/null...and get away with it. Well, they shouldn't, because it won't work and
/dev/null will get overwritten with a plain file. However, I was suprised to see that cp really works that way, when used with the proper options:
$ cp /dev/null /var/tmp/foo $ ls -l /var/tmp/foo -rw-r--r-- 1 root root 0 May 27 19:02 /var/tmp/foo $ cp -R /dev/null /var/tmp/foo $ ls -l /var/tmp/foo crw-r--r-- 1 root root 1, 3 May 27 19:03 /var/tmp/foo $ cp /tmp/file.txt /var/tmp/foo $ ls -l /var/tmp/foo crw-r--r-- 1 root root 1, 3 May 27 19:03 /var/tmp/foo $ cp -R /tmp/file.txt /var/tmp/foo $ ls -l /var/tmp/foo crw-r--r-- 1 root root 1, 3 May 27 19:03 /var/tmp/fooOn my way to this adventure I stumbled across this, introducing a new "feature" in busybox:
config FEATURE_NON_POSIX_CP
bool "Non-POSIX, but safer, copying to special nodes"
default y
help
With this option, "cp file symlink" will delete symlink
and create a regular file. This does not conform to POSIX,
but prevents a symlink attack.
Similarly, "cp file device" will not send file's data
to the device. (To do that, use "cat file >device")
Ouch :-(