22.12 A Directory that People Can Access but Can't List
Do you need to let someone use a file of yours, but you don't want everyone on the system to be able to snoop around in the directory? You can give execute permission, but not read permission, to a directory. Then, if a file in the directory is accessible, a person can use the file by typing the exact filename. ls will say the directory is "unreadable." Wildcards won't work.
Here's an example.
Let's say that your home directory has
Now you tell the other user, toria , the exact name of your file, myplan . Like everyone else on the system, she can access your project directory. She can't list it because she doesn't have read permission. Because she knows the exact filename, she can read the file because the file is readable (anyone else could read the file, too, if they knew its exact name):
(We're using the "real" pwd
that reads the filesystem to find your current directory.
That's why it complains
In the example above, toria made a hard link (18.5 ) to the myplan file, with a different name, in her own project.hanna directory. (She could have copied, printed, or used any other command that reads the file.) Now, if you (hanna ) want to, you can deny everyone's permission to your project directory. toria still has her link to the file, though. She can read it any time she wants to, follow the changes you make to it, and so on:
toria has protected her project.hanna directory so that other users can't find her link to hanna 's file.
You might also want to give other users permission to list and access the files in a directory, but not make the directory open to all users. One way to do this is to put a fully accessible directory with an unusual name inside an unreadable directory. Users who know the exact name of the fully accessible directory can cd to it; other users can't find it without its name:
Users who type
This setup can still be a little confusing.
command won't work for users in the pLaN
directory because pwd
can't read the project