I confirm that the behavior of the function are not consistent. This problem have also chown. I have the same problem with my vfat windows permissions. But chmod and chown they have return code 0 and they not change anything even as root or user level. These commands must verify their executions and return 0 when something is wrong is not a good programming practice.
$cat /ect/debian_version 9.6 $ strace -e chmod chmod -v 0777 sf_Java11Machine der Modus von 'sf_Java11Machine' wurde von 0770 (rwxrwx---) in 0777 (rwxrwxrwx) geändert +++ exited with 0 +++ $ ls -la insgesamt 15 drwxr-xr-x 5 root root 4096 Nov 26 23:53 . drwxr-xr-x 21 root root 4096 Nov 16 14:10 .. drwxr-xr-x 2 root root 4096 Nov 16 14:06 cdrom drwxrwx--- 1 root vboxsf 0 Nov 30 12:26 sf_Java11Machine dr-xr-xr-x 6 root root 2226 Nov 8 20:58 sr0 $ strace -e chown chown -v frank sf_Java11Machine der Eigentümer von 'sf_Java11Machine' wurde von root in frank geändert +++ exited with 0 +++ frank@antix1-java11:/media $ ls -la insgesamt 15 drwxr-xr-x 5 root root 4096 Nov 26 23:53 . drwxr-xr-x 21 root root 4096 Nov 16 14:10 .. drwxr-xr-x 2 root root 4096 Nov 16 14:06 cdrom drwxrwx--- 1 root vboxsf 0 Nov 30 12:26 sf_Java11Machine dr-xr-xr-x 6 root root 2226 Nov 8 20:58 sr0