I tried this on Opensuse 12 and Fedora 17, i use the following commans
touch file
chown 777 file
ls -l file
-rw-r--r-- 1 777 root 0 Oct 9 21:43 file
grep 777 /etc/passwd
echo $?
1
There is no user 777
grep pippo /etc/passwd
echo $?
1
chown pippo file
chown: invalid user: `pippo'
But if i use non-existing user, i get one error.
Why can i use numeric non-existing user with chown, but not with names?
Because a username must be resolved to a UID, so if the user does not exist no resolution can occur, whereas a UID is a terminating type (it describes itself without resolution).
Technically all chown requests by the operating system must be done against a UID. The username is for your benefit, not the operating system.