Linux Directory Permissions Explained — How rwx Differs for Directories

Understand how read, write, and execute permissions work differently on directories versus files. Why directories need execute permission for traversal.

Directory & Web

Detailed Explanation

How Directory Permissions Differ from File Permissions

The same permission bits (rwx) have fundamentally different meanings for directories compared to regular files.

Permission Comparison

Bit On Files On Directories
r (read) View file contents List directory contents (ls)
w (write) Modify file contents Create/delete files inside
x (execute) Run as program Enter directory (cd), access files

The Execute Bit Is Critical

The execute bit on directories is the most commonly misunderstood permission:

# Without execute, you cannot cd into the directory
chmod 660 /test/dir
cd /test/dir
# bash: cd: /test/dir: Permission denied

# Without execute, you cannot access ANY file inside
chmod 660 /test/dir
cat /test/dir/file.txt
# cat: /test/dir/file.txt: Permission denied

Read Without Execute

If a directory has read but NOT execute:

chmod 644 /test/dir   # r-- for group and others

# You CAN see file names
ls /test/dir
# file1.txt  file2.txt

# But you CANNOT access file details
ls -l /test/dir
# ls: cannot access '/test/dir/file1.txt': Permission denied

# And you CANNOT read files inside
cat /test/dir/file1.txt
# Permission denied

Execute Without Read

If a directory has execute but NOT read:

chmod 711 /test/dir   # --x for group and others

# You CANNOT list contents
ls /test/dir
# ls: cannot open directory '/test/dir': Permission denied

# But you CAN access files if you know the name
cat /test/dir/file1.txt
# (works if file1.txt itself is readable)

This is sometimes used as a "security through obscurity" measure.

Write Without Sticky Bit

If a directory has write permission for others:

chmod 777 /shared/dir   # Everyone can write

# ANY user can delete ANY file, even files they don't own!
rm /shared/dir/someones-file.txt   # Works!

# Solution: add sticky bit
chmod 1777 /shared/dir   # Now only owner can delete

Common Directory Permissions

Permission Use Case
755 Public directories, web root
750 Group-accessible directories
700 Private directories (~/.ssh)
1777 Shared temp directories (/tmp)
2775 Group shared with SGID

Use Case

Understanding directory permissions is fundamental for system administration, web server configuration, and debugging 'Permission denied' errors. Many permission issues stem from missing execute permission on a parent directory in the path.

Try It — Linux Permission Reference

Open full tool