Pluralsight blog Where devs, IT admins & creative pros go for news, tips, videos and more.
Pluralsight + Digital-Tutors - 3,000 tech & creative courses - starting at $29/month Get it now →
December 14, 2011

Linux File Permissions

By linux-file-permissions_featured-image

What we’ll cover in this article is how to identify permissions for files & directories and how to change them, as well as changing ownerships, groups, etc. Depending on what you want to do, you’ll want to make sure you have the appropriate permissions (obviously), so let’s find out how to change them.

Let’s start by making a file we can use.

I issued the “touch” command to make a file creatively named testfile.

Touch will just create an empty file but has all the same attributes as an actual file. You can see this by using “ls –l.”

touch test file
mkdir workfolder

Linux File Permissions 1

The permisions are broken into 4 sections.

Linux File Permissions 2

chmod – adds and removes permissions

If you wanted to add or remove permissions to the user, use the command “chmod” with a “+” or “–“, along with the r (read), w (write), x (execute) attribute followed by the name of the directory or file.

chmod +rwx “name of the file”
chmod –rwx “name of the directory”

Linux File Permissions 3

chmod +x testfile – this would allow me to execute
chmod –wx testfile – this would take out write and executable permissions

You’ll notice that this only changes the permissions for the owner of the file, in this case roman.

Changing Permissions for the Group Owners & Others

The command is similar to what we did before, but this time you add a “g” for group or “o” for users.

chmod g+w testfile
chmod g-wx testfile

Linux File Permissions 4

chmod o+w testfile
chmod o-rwx workfolder

Linux File Permissions 5

Lastly you can change it for everyone: “u” for users, “g” for group, & “o” for others; uog or a (for all).

chmod ugo+rwx workfolder – will give read, write, execute to everyone
chmod a=r workfolder – will give only read perission for everyone

chgrp – changing groups of files & directories

Another useful option is to change file permission to the group owning the file. Perhaps you create the files, but people on the db2 team can write/execute as well. We use chgrp for this purpose.

Linux File Permissions 6

You can see above that testfile and the work folder belong to the users group.

Linux File Permissions 7

By issuing the command – chgrp “name of the group” “name of the file” – you can change this.

chgrp sales testfile
chgrp sales workfolder

This give sales control of the file & then I can take away permissions for everyone else.

Note: The group must exit before you try to assign groups to files and directories.

chown – changing ownership

Another helpful command is changing ownerships of files and directories. The command is “chwon” along with “name of new owner” & “name of file.”

Linux File Permissions 8

The files belonged to roman. To give ownership to tom, issue the command:

chown tom testfile
chown tom workfolder

We can also combine the group and ownership command by:

Linux File Permissions 9

chown -R tom:sales /home/roman/tsfiles

The above command gives tom the ownership of the directory tsfiles, and all files and subfolders. The -R stands for recursive which is why all sub folders and files belong to tom as well.

As opposed to: chown tom workfolder

This command will give ownership to tom but all sub files and directories still belong to the original owner. The -R will transfer ownership of all sub directories to the new owner.

As you can see, you have several options when it comes to permissions. You have the capability to dictate who can do what & the flexibility to limit usability among users. It may be easier to just give all permission to everyone but this may end up biting you in the end, so choose wisely.

Permission in numeric mode

The above way of changing permissions will work fine but you may also need to know how to change permissions in numeric mode. chmod is used in much the same way, but instead of r, w, or x you will use numbers instead.

What are the numbers?
0 = No Permission
1 = Execute
2 = Write
4 = Read

You basically add up the numbers depending on the level of permission you want to give.

Linux File Permissions 10

chmod 777 workfolder
Will give read, write, and execute permissions for everyone.

Linux File Permissions 11

chmod 700 workfolder
Will give read, write, and execute permission for the user, but nothing to everyone else.

Linux File Permissions 12

chmod 327 workfolder
Will give write and execute (3) permission for the user, w (2) for the group, and read, write, and execute for other users.
Permission numbers
0 = —
1 = –x
2 = -w-
3 = -wx
4 = r—
5 = r-x
6 = rw-
7 = rwx

Either variation of changing permissions will work, just remember how to use the numeric values.

About the Author

is the product of Western Illinois University’s prestigious academics programs. With a BS in Instructional Technology and a BA in Communications Roman has taken his education and applied it into the vast world of Information Technology. Roman currently works for Jack Morton Worldwide and is a Technical Administrator for the IBM training facility in the Chicago Loop. Roman has been working at Jack Morton for two years and is consistently engulfing himself in different technologies that IBM has to offer. While pursuing higher education through certifications such as A+ and Net + he also enjoys life outside of the computer world with ultimate frisbee, synchronized swimming, and fantasy football.