Tools/DevOps/Chmod Calculator

Chmod Calculator

Calculate Unix file permissions with an interactive visual grid.

Permission Grid

Read (4) Write (2) Execute (1) Octal
Owner 7
Group 5
Others 5

Common Presets

Result

-rwxr-xr-x 1 user group 4096 Mar 10 filename

Permission Summary

Common chmod values — quick reference

OctalSymbolicOwnerGroupOthersTypical use
755rwxr-xr-xrwxr-xr-xDirectories, executables, web server files
644rw-r--r--rw-r--r--Regular files (default)
600rw-------rw-------SSH private keys, sensitive configs, .env files
400r--------r--------Strictly read-only secrets (AWS credentials)
700rwx------rwx------Private scripts, ~/.ssh directory
777rwxrwxrwxrwxrwxrwxAvoid in production — debug only
664rw-rw-r--rw-rw-r--Shared group-writable files
775rwxrwxr-xrwxrwxr-xShared group-writable directories

chmod recursive — applying permissions to a directory tree

The -R flag applies chmod to a directory and everything inside it:

chmod -R 755 /var/www/html

But there's a gotcha: the same octal for files and directories is almost never what you want. Directories need execute (x) to allow cd into them; files don't. Running chmod -R 644 . on a project makes every directory unreadable.

The correct idiom for "files 644, directories 755":

# Set directories to 755
find . -type d -exec chmod 755 {} +

# Set files to 644
find . -type f -exec chmod 644 {} +

Or with a single chmod using X (capital) — which means "x only if target is a directory or already executable":

chmod -R u=rwX,go=rX .

Capital X is the single least-known chmod trick and usually what you actually want when recursing.

chmod +x — making a script executable

chmod +x script.sh adds the execute bit for everyone (equivalent to chmod a+x). Common uses:

# Make shell / Python / Node scripts runnable
chmod +x deploy.sh
./deploy.sh            # now executable

# Only owner can execute (more secure for personal scripts)
chmod u+x secret.sh

# Remove execute for group + others (for scripts with secrets)
chmod go-x secret.sh

The scripts still need a valid shebang on the first line (#!/bin/bash, #!/usr/bin/env python3, etc.). A missing shebang with +x set just produces "command not found" when you run it.

setuid, setgid, sticky bit — the 4th octal digit

Normal chmod has 3 octal digits (owner, group, others). A 4th digit adds special bits:

  • chmod 4755 /usr/bin/passwd — setuid bit. When run, the program runs with the owner's permissions instead of the user's. /usr/bin/passwd is setuid root so regular users can update /etc/shadow.
  • chmod 2775 /shared/project — setgid bit on a directory. New files created inside inherit the directory's group (instead of the user's primary group). Essential for multi-user shared project directories.
  • chmod 1777 /tmp — sticky bit. Any user can create files, but only the file owner (or root) can delete them. /tmp uses this so one user can't rm another's temp files.

Setuid + setgid are security-sensitive — audit with find / -perm -4000 -type f periodically to catch unexpected setuid binaries.

Frequently Asked Questions

How do I calculate chmod permissions online?

Click checkboxes for read / write / execute for owner, group and other. The tool shows both the symbolic form (`rwxr-xr--`) and the octal form (`754`) so you can `chmod 754 file` or `chmod u=rwx,g=rx,o=r file`. No guessing, no recomputing.

What does chmod 755 or 777 mean?

`chmod 755` = owner read/write/execute, group + others read/execute. Standard for executables and directories. `chmod 777` = everyone can read, write and execute — almost never correct in production (security risk). `644` is the default for data files.

How do I chmod a directory vs a file?

Files and directories use the same octal numbers, but execute on a directory means "can list contents" (not run as program). Typical: files `644`, directories `755`. Use `-R` for recursive `chmod -R 644 .` (and `find . -type d -exec chmod 755 {} +` to fix dir permissions).

What's the difference between symbolic chmod and octal chmod?

Symbolic is relative: `chmod u+x` adds execute for owner, leaves others alone. Octal is absolute: `chmod 755` sets exactly those permissions, overwriting. Symbolic is safer for incremental changes; octal is faster for known states.

What is the setuid, setgid and sticky bit in chmod?

The 4th octal digit: setuid (`4xxx`) runs a program as its owner (used by `passwd`), setgid (`2xxx`) enforces group inheritance on new files in a directory, sticky bit (`1xxx`) stops users deleting others' files in shared dirs like `/tmp`. Our calculator exposes all three.

Copyright © 2026 BuildStudio. All rights reserved.

Designed and Developed by Webority Technologies

Copied to clipboard