Friday, March 16, 2012

Linux File Permissions

       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.”
Commands : 
  • touch test file
  • mkdir workfolder
 The permisions are broken into 4 sections

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 +rwxname of the file
chmod –rwxname of the directory 
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 
chmod o+w testfile
chmod o-rwx workfolder
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.

You can see above that testfile and the work folder belong to the users group
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.”

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 

chown -R tom:sales /home/roman/ts files
 
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 

Examples:


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



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


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 


No comments:

Post a Comment