What Is chmod 777 and What Does It Do in Linux?

What Is chmod 777

This article explores chmod 777, a Linux command used to give ALL RIGHTS to the user, group, and others.

As a new Linux user, web developer, or system administrator, you have probably been instructed to type:

chmod 777 /path/to/file/or/folder

…into your Linux shell at some point.

Whenever you’re running commands on your systems (especially as root!), you should ALWAYS know what they’re up to. So what’s chmod 777 really about?

Permissions in Linux

ls - l command

ls – l command

Above is an example of running the:

ls -l

command, which will list the current directory contents in the long listing format, which shows the permissions and modification dates for the files being listed.

  • The first column shown is the permissions assigned to the file or directory
  • The second column is the number of files or folders contained
  • The third and fourth columns show the user and group who have permissions for those files, respectively
  • The fifth and sixth show the size and modification date
  • The final column shows the name of the file

The first, third, and fourth columns contain information relevant to permissions, which will be referenced in this article

The folders listed in the screenshot are in the linuxscrew users home directory, and all have the permission

drwxr-xr-x 

With both the owner and group of the linuxscrew user who owns them.

drwxr-xr-x contains 4 pieces of information, 3 of them regarding permissions:

d rwx r-x r-x
It’s a directory Owner can Read, Write, eXecute Group can Read, eXecute Others can Read, eXecute
  • The first letter shows what type of file – if it’s d it’s a directory, if it’s  it’s a regular file
  • The 2nd-4th characters contain the permissions for the user
  • The 5th-7th characters contain the permissions for the group
  • The 8th-10th characters contain the permissions for others

The letters in each block have the following meanings:

  • ‘-‘ permission denied
  • ‘r’ read permission
  • ‘w’ write permission
  • ‘x’ execute permission

There are also some special values that the eXecute character can take:

  • ‘s’ setuid bit, found in the user or group permissions, users able to execute the file will execute with the privileges of the file’s owner and/or the file’s group. It means that x is set, making the file executable
  • ‘S’ Same as ‘s’ but the file is not executable
  • ‘t’ Sticky bit, found in the others permissions, makes the file sticky – only the owner can rename or delete the file or files within. Group and others cannot! It also means that x is set, making the file executable
  • ‘T’ Same as ‘t’ but the file is not executable

For completeness, different file types can occupy the first character space:

  • ‘-‘ regular file
  • ‘b’ block special file
  • ‘c’ character special file
  • ‘C’ high performance (“contiguous data”) file
  • ‘d’ directory
  • ‘D’ door (Solaris 2.5 and up)
  • ‘l’ symbolic link
  • ‘M’ off-line (“migrated”) file (Cray DMF)
  • ‘n’ network special file (HP-UX)
  • ‘p’ FIFO (named pipe)
  • ‘P’ port (Solaris 10 and up)
  • ‘s’ socket
  • ‘?’ some other file type

What the 777 Means

To make things quicker to type when assigning permissions, numbers can be used to represent combinations of the letters shown above:

  • 7 All rights
  • 6 Read and write
  • 5 Read and execute
  • 4 Read-only
  • 3 Execute and write
  • 2 Write only
  • 1 Execute only
  • 0 No rights

So, to give ALL RIGHTS to both the usergroup, and others, we’d want to assign the permission 777

The chmod Command

The chmod (Change Mode) command lets you apply permissions to files.

chmod 777

So, running:

chmod 777 /path/to/file/or/folder

…will give the file or folders owner (user), group (users within the group), and others (everyone else on the system) full read, write and execute privileges.

chmod -R 777 /path/to/file/or/folder

This will do the same thing, recursively, and give everyone full rights on the files contained within a directory.

Now you know!

SHARE:
nv-author-image

Brad Morton

I'm Brad, and I'm nearing 20 years of experience with Linux. I've worked in just about every IT role there is before taking the leap into software development. Currently, I'm building desktop and web-based solutions with NodeJS and PHP hosted on Linux infrastructure. Visit my blog or find me on Twitter to see what I'm up to.

Leave a Reply

Your email address will not be published. Required fields are marked *