7.3. Access to Directories
Unix uses the
same mode bits
(Section 50.2) for
directories as for files, but they are interpreted differently. This
interpretation will make sense if you remember that a directory is
nothing more than a list of files. Creating a file, renaming a file,
or deleting a file from a directory requires changing this list:
therefore, you need write access to the directory to
create or delete a file. Modifying a file's contents
does not require you to change the directory; therefore, you can
modify files even if you don't have write access to
the directory (provided that you have write access to the file).
Reading a
directory is relatively straightforward: you need read access to list
the contents of a directory (find out what files it contains, etc.).
If you don't have read access, you
can't list the contents of the directory. However
(surprise!), you may still be able to access files in the directory,
provided that you already know their names.
Execute access for a directory has
no meaning per se, so the designers of Unix have reassigned this. It
is called the search bit. Search access is
needed to perform any operation within a directory and its
subdirectories. In other words, if you deny execute access to a
directory, you are effectively denying access to the directory and
everything beneath it in the directory tree. Note that providing
search access to a directory without read access prevents people from
listing the directory, but allows them to access files if they know
their names. This is particularly useful in situations where you want
to allow public access to areas, but only to people who know exactly
what files to access; files available via a web server are a good
example.
The SUID bit (Section 50.4) is meaningless for directories, but the
SGID bit set on a directory
affects group ownership of files created in that directory, and the
sticky bit prohibits users with write access to the directory from
deleting or renaming files that they don't own.
The exception is, of course, that the superuser can do absolutely
anything at any time.
-- ML
 |  |  | 7.2. Many Homes |  | 7.4. A bin Directory for Your Programs and Scripts |
Copyright © 2003 O'Reilly & Associates. All rights reserved.
|