How to Read and Set Linux chmod Permissions

Build owner, group, and others modes as octal and symbolic rwx, then copy a chmod command—without setuid or ACL complexity.

By Haivix Team 8 min read
Abstract Linux permission triplets and lock panels on a dark navy background

Unix file modes answer three questions for owner, group, and others: can they read, write, and execute? Getting those bits wrong either locks out a deploy user or leaves a world-writable file on a shared host.

The Haivix Chmod Calculator builds each triplet as a digit 0–7 with symbolic labels, shows the combined octal (for example 755) and symbolic string (rwxr-xr-x), and copies chmod {octal} filename. Work stays in the browser; it does not change files on a server.

Octal digits in plain language

Each digit is read(4) + write(2) + execute(1). So 7 is rwx, 6 is rw-, 5 is r-x, 4 is r--, and 0 is ---. Three digits cover owner, group, others—in that order.

Presets include 755 (common for directories and executable scripts), 644 (typical files), 700 and 600 (owner-only), and 775 (group-writable). Custom lets you toggle each bit. The UI warns against casual 777.

What this calculator does not cover

No setuid, setgid, sticky bit, ACLs, or SELinux contexts. It does not emit chmod u=rwx,g=rx,o=rx forms or recursive -R. Windows ACL models are out of scope.

Copy the command into your shell or config management after you confirm the path. Pair network checks with Subnet Calculator or DNS Lookup when permissions and connectivity both matter on a host.

Practical defaults

Prefer the least privilege that still works: 644 for static web files, 755 for directories that must be traversable, tighter modes for secrets and SSH keys. If a web app “needs 777,” fix ownership or the process user instead of opening the tree to everyone.

Checklist before you run chmod

Open the Chmod Calculator, pick a preset or custom bits, and copy the command into your session.

  • Owner/group/others match who must access the path.
  • Execute bits are only where directories or binaries need them.
  • You avoided 777 unless you have a documented exception.
  • Special bits (setuid/sticky) were handled outside this tool if required.
  • You tested as the real service user after the change.