Chmod Numeric Permissions Notation UNIX / Linux Command

Can you provide more information about chmod command octal mode number notation?

The command chmod changes the file mode bits of each given file according to mode, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits. chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions. This is not a problem since the permissions of symbolic links are never used. However, for each symbolic link listed on the command line, chmod changes the permissions of the pointed-to file. In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

UNIX / Linux chmod command

A bit mask created by ORing together zero or more of the following:

Octal Mode Number Description
0400 Allows the owner to read
0200 Allows the owner to write
0100 Allows the owner to execute files and search in the directory
0040 Allows group members to read
0020 Allows group members to write
0010 Allows group members to execute files and search in the directory
0004 Allows everyone or the world to read
0002 Allows everyone or the world to write
0001 Allows everyone or the world to execute files and search in the directory
1000 Sets the sticky bit
2000 Sets the setgid bit
4000 Sets the setuid bit

First digit in the above mode number is used to set setuid, setgid, or sticky bit. Each remain digit set permission for the owner, group, and world as follows:

  1. 4 = r (Read)
  2. 2 = w (Write)
  3. 1 = x (eXecute)

So you end up creating the triplets for your user by adding above digits. For e.g.

  • To represent rwx triplet use 4+2+1=7
  • To represent rw- triplet use 4+2+0=6
  • To represent r– triplet use 4+0+0=4
  • To represent r-x triplet use 4+0+1=5

To only give full permission to user, use it as follows:
chmod 0700 file.txt

  • 0 – Use set setuid, setgid, or sticky bit
  • 7 – Full permission for owner (rwx = 4+2+1=7)
  • 0 – Remove group permission (— = 0+0+0=0)
  • 0 – Remove world permission (— = 0+0+0=0)

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 10 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf duf ncdu pydf
File Managementcat cp mkdir tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Modern utilitiesbat exa
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg glances gtop jobs killall kill pidof pstree pwdx time vtop
Searchingag grep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
10 comments… add one
  • Tsakos Dec 18, 2009 @ 11:35

    To represent r-x triplet use 4+0+1=1 – It should be 5, not 1. :-)

  • 🐧 nixCraft Dec 18, 2009 @ 15:19


    Thanks for the heads up!

  • Pokermu Nov 4, 2010 @ 13:07

    Thank you. It opened my eyes wide.

  • Dinesh Feb 10, 2011 @ 7:41

    Very Good Explanation It helps me a lot

  • hari Jul 22, 2012 @ 11:21

    what are the permissions for the chmod 000 hari consider the hari file was exited

  • Mohammed Jul 24, 2013 @ 18:49

    Very useful & Informative.

  • petr Aug 20, 2014 @ 7:49

    i stumble on problem when I set setuid and setgid bits, but no matter what I do I cannot undo them with number semantic…:

    # ls -l
    drwsrwsrwx 2 abc abc 2 18. srp 16.37 directory

    # chmod 0000 directory
    # ls -l
    d–S–S— 2 abc abc 2 18. srp 16.37 directory

    Can someone help? I could do chmod ug-s which works, but I always used number semantic and want to know how to resolve this with them.


  • AHMAD Jan 5, 2015 @ 17:16

    LS -L

  • AHMAD Jan 5, 2015 @ 17:17

    chmod a+x filename

  • haseeb azimi Feb 6, 2016 @ 10:00

    Access Class Operator Access Type
    u (user) + (add access) r (read)
    g (group) – (remove access) w (write)
    o (other) = (set exact access) x (execute)
    for example: chmod a+r myfile

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum