Chmod How To Use

Chmod How To Use

Reading time1 min
#Linux#Security#Permissions#chmod#Sysadmin

Mastering chmod: Granular Linux File Permission Control

Experienced system administrators know that lazy use of chmod (chmod 777 everywhere, anyone?) is a security hazard. Excess permissions leave critical vectors exposed; insufficient ones break automation or collaboration. Granular, intentional permission design is non-optional in production Linux systems.

Risks of Misused Permissions

  • drwxrwxrwx: Destroys audit trails; everyone owns the world.
  • Unset sticky or setgid bits: Shared directories become a free-for-all.
  • Setuid root: Obvious attack surface—see CVE-2021-3156 for a reminder.

Anatomy of Unix Permissions

drwxr-sr-t 2 root devops 4096 Apr 10 17:26 shared-dir

Broken down:

PositionMeaningExample here
1Type (d=directory)d
2–4User (owner)rwx
5–7Groupr-s (s=setgid)
8–10Othersr-t (t=sticky)
11+Metadataroot/devops, etc.

Standard Bits:

  • r (read): view contents.
  • w (write): modify.
  • x (execute): run (or traverse directory).

Extended Bits:

  • s (setuid/setgid): process runs with file owner or group privileges.
  • t (sticky): only file owner/deleter can remove/rename.

Symbolic Mode: Targeted Adjustments

Typical syntax:

chmod [u|g|o|a][+|-|=][rwxXst] file

Practical scenarios:

  • Feature script debugging safely:

    chmod u+x gen-report.py
    
  • Securing shared upload directory:

    chmod o-w,g-w uploads/
    chmod +t uploads/
    

    Ensures only file creators can delete; a must on /tmp-style directories.

  • Promoting collaboration, not chaos:

    chmod g+rw logs/project.log
    chmod o-r logs/project.log
    

X grants execute only if the target is a directory or already executable—avoids accidental binary flagging.

Numeric (Octal) Mode: Fast, Repeatable, Scriptable

Permissions are additive:

  • 4 = read
  • 2 = write
  • 1 = execute

Structure: USER | GROUP | OTHER
Example:
chmod 750 deploy.sh — owner all, group rx, others none.

Octalrwx
7rwx
6rw-
5r-x
4r--
0---

Extended Numeric: SUID/SGID/Sticky

Prefix with single digit for special bit(s):

BitValueEffect
Setuid4Run as file owner (user)
Setgid2Run as group or enforce group
Sticky1Restrict deletion (directory)

Examples:

  • Setuid root (use caution):

    chmod 4750 /usr/local/bin/admin-helper
    
  • Group-shared directory:

    chmod 2775 /srv/teamshare/
    
  • World-writable with sticky:

    chmod 1777 /tmp/
    

Note: Setuid on scripts is mostly ignored since Linux 2.1.46—don't rely on it for shell/Python wrappers.

Real-world Example: Project Collaboration Directory

On a multiuser system (e.g., Ubuntu 22.04 LTS), create a directory for group-shared build artifacts. All team members should write, but no file deletions except by the creator.

mkdir /srv/builds
chown :developers /srv/builds
chmod 2770 /srv/builds   # Setgid plus group rwx
chmod +t /srv/builds     # Sticky for deletion safety

New files inherit group developers; accidental rm by others blocked.

Non-obvious Tip: Bulk Permission Fixes

Inherited permissions often get messy after rsync or restoring from backup. Reset only directories to 755, files to 644, and secure scripts (in-place):

find app/ -type d -exec chmod 755 {} \;
find app/ -type f -exec chmod 644 {} \;
find app/ -type f -name "*.sh" -exec chmod u+x {} \;

Gotcha: Some build artifacts (e.g., webpack output) are scripts but don’t need execute; treat automation with vigilance.

Verification & Troubleshooting

After changing permissions, always verify:

ls -l /srv/builds
getfacl /srv/builds

Unexpected output?

  • Operation not permitted errors: possible immutable (chattr +i) or lacking privilege.
  • NFS/SMB shares may ignore local chmod due to exported fs options.

Summary

chmod is not just a blunt tool. Precision—symbolic vs numeric, extended bits, scripted mass adjustments—shields your environment from breach or data chaos. Remember: perfect permissions are a moving target, not a one-off command.


For more specialized scenarios (ACLs, SELinux labels, containerized filesystems), refer to system-specific documentation. For edge cases or high-assurance audits, supplement chmod with setfacl, lsattr, and related tools.