Changing File Ownership in Linux

I hope you have understand file ownership and permissions from my previous post Understanding File Permissions Linux. In this post you will learn how to set file permissions in linux.

Change the owner of a file in linux:

You can change the owner and group of a file or a directory with the chown command. Please, keep in mind you can do this only if you are the root user or the owner of the file.

File ownership in Linux
File ownership in Linux

Set the file’s owner:
$ chown username somefile
After giving this command, the new owner of a file called somefile will be the user username. The file’s group owner will not change. Instead of a user name, you can also give the user’s numeric ID here if you want.

You can also set the file’s group at the same time. If the user name is followed by a colon and a group name, the file’s group will be changed as well.
$ chown username:usergroup somefile
After giving this command, somefile‘s new owner would be user username and the group usergroup.

You can set the owner of a directory exactly the same way you set the owner of a file:
$ chown username somedir
Note that after giving this command, only the owner of the directory will change. The owner of the files inside of the directory won’t change.

In order to set the ownership of a directory and all the files in that directory, you’ll need the -R option:
$ chown -R username somedir
Here, R stands for recursive because this command will recursively change the ownership of directories and their contents. After issuing this example command, the userusername will be the owner of the directory somedir, as well as every file in that directory.

Tell what happens:

$ chown -v username somefile
changed ownership of 'somefile' to username

Here, v stands for verbose. If you use the -v option, chown will list what it did (or didn’t do) to the file.

The verbose mode is especially useful if you change the ownership of several files at once. For example, this could happen when you do it recursively:

$ chown -Rv username somedir
changed ownership of 'somedir/' to username
changed ownership of 'somedir/boringfile' to username
changed ownership of 'somedir/somefile' to username

As you can see, chown nicely reports to you what it did to each file.

Change Group of a file in Linux:

In addition to chown, you can also use the chgrp command to change the group of a file or a directory. You must, again, be either the root user or the owner of the file in order to change the group ownership.

chgrp works pretty much the same way as chown does, except it changes the file’s user group instead of the owner, of course.
$ chgrp usergroup somefile
After issuing this command, the file somefile will be owned by a user group usergroup. Although the file’s group has changed to usergroup, the file’s owner will still be the same.

The options of using chgrp are the same as using chown. So, for example, the -R and -v options will work with it just like they worked with chown:

$ chgrp -Rv usergroup somedir
changed group of 'somedir/' to usergroup
changed group of 'somedir/boringfile' to usergroup
changed group of 'somedir/somefile' to usergroup

chown nicely reports to you what it did to each file.

This content is copied from http://www.tuxfiles.org/linuxhelp/fileowner.html

Setting File Permissions in Linux

I hope you have understand file ownership and permissions from my previous post Understanding File Permissions Linux. In this post you will learn how to set file permissions in linux.

Setting File Permissions in Linux – Symbolic mode:

You can set file permissions with the chmod command. Both the root user and the file’s owner can set file permissions. chmod has two modes, symbolic and numeric.

Linux File Permissions
Linux File Permissions

The symbolic mode is pretty easy to remember. First, you decide if you set permissions for the user (u), the group (g), others (o), or all of the three (a). Then, you either add a permission (+), remove it (-), or wipe out the previous permissions and add a new one (=). Next, you decide if you set the read permission (r), write permission (w), or execute permission (x). Last, you’ll tell chmod which file’s permissions you want to change.

Let’s have a couple of examples. Suppose we have a regular file called testfile, and the file has full access permissions for all the groups (long directory listing would show-rwxrwxrwx as the file’s permissions).

Wipe out all the permissions but add read permission for everybody:
$ chmod a=r testfile
After the command, the file’s permissions would be -r--r--r--

Add execute permissions for group:
$ chmod g+x testfile
Now, the file’s permissions would be -r--r-xr--

Add both write and execute permissions for the file’s owner. Note how you can set more than one permission at the same time:
$ chmod u+wx testfile
After this, the file permissions will be -rwxr-xr--

Remove the execute permission from both the file’s owner and group. Note, again, how you can set them both at once:
$ chmod ug-x testfile
Now, the permissions are -rw-r--r--

As a summary, have a look at this quick reference for setting file permissions in symbolic mode:

Which user?
u user/owner
g group
o other
a all
What to do?
+ add this permission
remove this permission
= set exactly this permission
Which permissions?
r read
w write
x execute

Setting File Permissions in Linux – Numeric mode:

The other mode in which chmod can be used is the numeric mode. In the numeric mode, the file permissions aren’t represented by characters. Instead, they are represented by a three-digit octal number.

4 = read (r)
2 = write (w)
1 = execute (x)
0 = no permission (-)

To get the permission bits you want, you add up the numbers accordingly. For example, the rwx permissions would be 4+2+1=7, rx would be 4+1=5, and rw would be 4+2=6. Because you set separate permissions for the owner, group, and others, you’ll need a three-digit number representing the permissions of all these groups.

Let’s have an example.
$ chmod 755 testfile
This would change the testfile‘s permissions to -rwxr-xr-x. The owner would have full read, write, and execute permissions (7=4+2+1), the group would have read and execute permissions (5=4+1), and the world would have the read and execute permissions as well.

Let’s have another example:
$ chmod 640 testfile
In this case, testfile‘s permissions would be -rw-r-----. The owner would have read and write permissions (6=4+2), the group would have read permissions only (4), and the others wouldn’t have any access permissions (0).

The numeric mode may not be as straightforward as the symbolic mode, but with the numeric mode, you can more quickly and efficiently set the file permissions. This quick reference for setting file permissions in numeric mode might help:

Which number?
0
1 –x
2 -w-
3 -wx
4 r–
5 r-x
6 rw-
7 rwx

This content is copied from http://www.tuxfiles.org/linuxhelp/filepermissions.html

Understanding File Permissions Linux

Linux File Permissions

Why Strict file Permissions and Ownership:

Linux OS is designed for a multi-user environment. An environment where more than one users are access the same file system and other resources at the same time. In such an environment file permissions and ownership would be a problem if you don’t configure it properly.

For example, one user have created a file and someone else deleted it mistakenly or deliberately, then first user would lose all the data he has compiled. This can be handled if you configure user rights properly.

Second example, one user executed a process and that process is gonna take a long time to be completed. Meanwhile somebody else stopped it, then the first user would not happy about this. For such things user permissions should be configured properly.

Understanding file Ownership in linux:

Each file/directory in linux is own by a specific user and a group. Therefore, permissions are separately defined for User, Group and Others.

User: User name of who owns the file/directory. By default the user who creates the file/directory is owner of that.

Group: The usergroup that owns the file. All the users in this group would have same file permissions.

Group permissions are usable if multiple users in a group are using some common file/directory. You need to make sure that the file is owned by the right group you want to give permissions to.

Others: A user who is not the owner of the file/directory and he also is not in the owner group.

Some people call it ‘world’ permissions.

Understanding File permissions in linux:

There are three types of file permissions in linux Read, Write and Execute. These permissions are separately defined for User, Group and Others.

Read: On a regular file, the read permission bit means the file can be opened and read. On a directory, the read permission means you can list the contents of the directory.

Write: On a regular file, this means you can modify the file means you can write new data to the file. In the case of a directory, the write permission means you can add, remove, and rename files in the directory.

This means that if a file has the write permission bit, you are allowed to modify the file’s contents, but you’re allowed to rename or delete the file only if the permissions of the file’s directory allow you to do so.

Execute: In the case of a regular file, this means you can execute the file as a program or a shell script. On a directory, the execute permission (also called the “search bit”) allows you to access files in the directory and enter it, with the “cd” command, for example.

However, note that although the execute bit lets you enter the directory, you’re not allowed to list its contents, unless you also have the read permissions to that directory.

Viewing file permissions in Linux:

You can list down directory contents with “ls” command but to see permissions of contents you need to get long listing of a directory contents with “ls -l” or “ll” command.

Following are the views with different listing types.

haris@harisaltaf-vaio:~/Downloads$ ls
DBs.zip images.jpg pc2-9.1.6.rar Scraper dl
haris@harisaltaf-vaio:~/Downloads$
haris@harisaltaf-vaio:~/Downloads$
haris@harisaltaf-vaio:~/Downloads$
haris@harisaltaf-vaio:~/Downloads$ ls -l
total 2276
-rw-r--r-- 1 haris haris 19527 2011-12-02 18:09 DBs.zip
-rw-r--r-- 1 haris haris 4712 2011-12-20 14:19 images.jpg
-rw-r--r-- 1 haris haris 2295246 2011-12-23 21:41 pc2-9.1.6.rar
drwxr-xr-x 2 haris haris 4096 2011-12-09 18:16 Scraper dl
haris@harisaltaf-vaio:~/Downloads$
haris@harisaltaf-vaio:~/Downloads$
haris@harisaltaf-vaio:~/Downloads$
haris@harisaltaf-vaio:~/Downloads$ ll
total 2284
drwxr-xr-x 3 haris haris 4096 2011-12-23 21:43 ./
drwxr-xr-x 55 haris haris 4096 2011-12-31 14:16 ../
-rw-r--r-- 1 haris haris 19527 2011-12-02 18:09 DBs.zip
-rw-r--r-- 1 haris haris 4712 2011-12-20 14:19 images.jpg
-rw-r--r-- 1 haris haris 2295246 2011-12-23 21:41 pc2-9.1.6.rar
drwxr-xr-x 2 haris haris 4096 2011-12-09 18:16 Scraper dl/
haris@harisaltaf-vaio:~/Downloads$

What does the long listing output means. The first column, having values like drwxr-xr-x, shows file permissions. Second column having an integer value shows number of links to the file. Third column shows file owner. Fourth column shows owner group. Fifth column shows size of file in bytes. Sixth column shows file’s last modification date and time. Seventh column shows file name.

Linux File Permissions
Linux File Permissions

The first column which shows file permissions is organised into four parts. Four parts are divided as d rwx r-x r-x. The First part shows File Type. Second part shows Owner permissions. Third part shows Group permissions. Fourth part shows Other permissions.

File Types:

d = directory
 = regular file
l = symbolic link
b = block device file
p = named pipe
c = character device file
s = Unix domain socket

Permission character Meaning:

r = read permission
w = write permission
x = execute permission
 = no permission

To see hot to Set File Permissions in Linux see my next post.