Permissions can be used to limit access, yes, as in setting the file with no read permissions for the user. However, permissions cannot ‘hide’ a file name unless the directory is not readable, in which case the user cannot even see the content of the directory. If the directory is readable the file names will be readable, even if the content of the file is not.
There are lots of permutations on access using permissions.
Lets consider a user A & D who are neither the owner nor in the group that owns directory B and B contains a file C.
B has permissions
C has permissions
User A who knows the name of C can read it with ‘cat B/C’ even though he cannot see it in directory B because he does not have read permissions to B. As long as he has execute permissions and knows the file name he can use cat, or many other commands, to access files contained in B. He cannot use ls since that requires the read permission on the directory.
User D who does not know the name of C cannot even read it because he does not have read permissions to B, cannot see the file name for access, and without knowing the name of C has no way to access its content.
This is just one of many permutations available with judicious use of permissions.