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.
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
Related Topics
chmod 755 Explained — Owner Full, Others Read+Execute
Common Permissions
chmod 700 Explained — Owner-Only Full Access
Common Permissions
Linux Sticky Bit Explained — chmod 1777 and /tmp Security
Special Permissions
Web Server File Permissions — Apache, Nginx, and PHP
Directory & Web
Linux SGID (Set Group ID) Explained — Shared Directories with chmod 2775
Special Permissions