chmod Cheatsheet
Quick reference for changing file and directory permissions with chmod in Linux
chmod changes file and directory permissions in Linux. This cheatsheet covers symbolic and numeric modes, recursive updates, common permission patterns, and safety tips.
Basic Syntax
Use these core command forms for chmod.
| Command | Description |
|---|---|
chmod MODE FILE | General chmod syntax |
chmod 644 file.txt | Set numeric permissions |
chmod u+x script.sh | Add execute for owner |
chmod g-w file.txt | Remove write for group |
chmod o=r file.txt | Set others to read-only |
Numeric Modes
Common numeric permission combinations.
| Mode | Meaning |
|---|---|
600 | Owner read/write |
644 | Owner read/write, group+others read |
640 | Owner read/write, group read |
700 | Owner full access only |
755 | Owner full access, group+others read/execute |
775 | Owner+group full access, others read/execute |
444 | Read-only for everyone |
Symbolic Modes
Change specific permissions without replacing all bits.
| Command | Description |
|---|---|
chmod u+x file | Add execute for owner |
chmod g-w file | Remove write for group |
chmod o-rwx file | Remove all permissions for others |
chmod ug+rw file | Add read/write for owner and group |
chmod a+r file | Add read for all users |
chmod a-x file | Remove execute for all users |
Files and Directories
Typical permission patterns for files and directories.
| Command | Description |
|---|---|
chmod 644 file.txt | Standard file permissions |
chmod 755 dir/ | Standard executable directory permissions |
chmod u=rw,go=r file.txt | Symbolic equivalent of 644 |
chmod u=rwx,go=rx dir/ | Symbolic equivalent of 755 |
chmod +x script.sh | Make script executable |
Recursive Changes
Apply permission updates to directory trees.
| Command | Description |
|---|---|
chmod -R 755 project/ | Recursively set mode for all entries |
chmod -R u+rwX project/ | Add read/write and smart execute recursively |
find project -type f -exec chmod 644 {} + | Set files to 644 |
find project -type d -exec chmod 755 {} + | Set directories to 755 |
chmod -R g-w shared/ | Remove group write recursively |
Special Bits
Setuid, setgid, and sticky bit examples.
| Command | Description |
|---|---|
chmod 4755 /usr/local/bin/tool | Setuid on executable |
chmod 2755 /srv/shared | Setgid on directory |
chmod 1777 /tmp/mytmp | Sticky bit on world-writable directory |
chmod u+s file | Add setuid (symbolic) |
chmod g+s dir | Add setgid (symbolic) |
chmod +t dir | Add sticky bit (symbolic) |
Safe Patterns
Use these patterns to avoid unsafe permission changes.
| Command | Description |
|---|---|
chmod 600 ~/.ssh/id_ed25519 | Secure SSH private key |
chmod 700 ~/.ssh | Secure SSH directory |
chmod 644 ~/.ssh/id_ed25519.pub | Public key permissions |
chmod 750 /var/www/app | Limit web root access |
chmod 755 script.sh | Safer than 777 for scripts |
Common Errors
Quick checks when permission changes do not work.
| Issue | Check |
|---|---|
Operation not permitted | Check file ownership with ls -l and apply with the correct user or sudo |
Permission still denied after chmod | Parent directory may block access; check directory execute (x) bit |
Cannot chmod symlink target as expected | chmod applies to target file, not link metadata |
| Recursive mode broke app files | Reset with separate file/dir modes using find ... -type f/-type d |
| Changes revert on mounted share | Filesystem mount options/ACL may override mode bits |
Related Guides
Use these guides for full permission and ownership workflows.
| Guide | Description |
|---|---|
How to Change File Permissions in Linux (chmod command) | Full chmod guide with examples |
Chmod Recursive: Change File Permissions Recursively in Linux | Recursive permission strategies |
What Does chmod 777 Mean | Security impact of 777 |
Chown Command in Linux (File Ownership) | Change file and directory ownership |
Umask Command in Linux | Default permissions for new files |
Understanding Linux File Permissions | Permission model explained |