Viewing Linux File and Directory Permissions

Classes of Accounts

The files and directories in the home directory of your CLAS Linux account can be accessed on computers running the Linux operating system. Linux is a type of UNIX and uses UNIX file and directory permissions. For purposes of permissions, UNIX divides accounts into three classes:

user
Your account.

group
Any permissions group that your account belongs to.

other
Any account that is not yours and that does not belong to a permissions group that your account belongs to.

Types of Permissions

There are three basic types of permissions which can be assigned to each of these three classes of accounts:

read
write
execute

File Permissions

These three types of permissions mean slightly different things for files than for directories. For files, these permissions grant these rights:

read
Allowed to read the contents of the file

write
Allowed to modify or delete the file

execute
Allowed to run the file as a process, if possible

Directory Permissions

For directories, the permissions grant these rights:

read
Allowed to list the contents of the directory

write
Allowed to create, modify or delete files in the directory

execute
Allowed to access a file in the directory if you know the name of the file

Viewing File Permissions

The ls command is used to list files and the contents of directories. The -l parameter displays permissions. For example, to see the permissions of a file named foo in the directory /usr/bin/bar, you would execute:

ls -l /usr/bin/bar/foo

And the command would return something like this:

-rwxr-xr-- 1 jsmith guest 3072 Feb 11 09:25 /usr/bin/foo

In the example, jsmith is the account that owns foo, and guest is the name of the group that owns /usr/bin/foo. The -rwxr-xr-- at the left indicates the permissions. The first character, the -, indicates that /usr/bin/foo is a file, not a directory. The rwx shows the permissions for the user class of accounts - in this case, jsmith. The r indicates read permission; the w, write permission; and the x, execute permission. The next three characters, r-x, show permissions for the group class of accounts, which is guest in this example. Finally, the last three characters, r--, display permissions for the other class - any account that is not jsmith and is not in the guest group.

Viewing Directory Contents

If you want to see the contents of a directory, you also use ls. Suppose that /usr/bin/bar is a directory. Then the command:

ls -l /usr/bin/bar

may return something like this:

drwxr-x--x 5 jsmith guest 4096 Jan 23 2008 foodir
-rw-r----- 1 jsmith guest 48128 Sep 14 2004 WhatToDo.doc
-rw-rw-r-- 1 jsmith guest 464 Jul 6 2005 WinCA.txt

This shows us the contents of the directory bar. The d at the left of the entry for foodir indicates that foodir is a directory.

Viewing Directory Permissions

If you want to see the permissions of the /usr/bin/bar directory itself, not its contents, then you need to use the -d command-line argument for ls. So, you'd execute this command:

ls -ld /usr/bin/bar

and you'd see something like this:

dr-xrwxr-x 3 jsmith guest 4096 Jan 23 2008 /usr/bin/bar

The Current Working Directory

The current working directory is the directory that, by default, a UNIX command will use when it is executed. For example, if you do not specify a file or directory when you run the ls command, then ls will assume that you want to see the contents of your current working directory. So,

ls

will return a list of the files and directories in your current working directory. To see the absolute path of your current working directory, use the pwd command.

UNIX provides a shorthand for your current working directory. A single period (.) indicates the current working directory. Two periods (..) indicate the directory immediately above your current working directory.

Hidden Files and Directories

In UNIX, if a file or directory name begins with a period (.) then by default, ls will not display the file or directory in a directory listing. To see all the files in a directory, including hidden files, use the -a command-line argument. The command:

ls -a

will show all files and directories in a directory, including hidden files. The command:

ls -al

will display all files and directories, and also show their permissions.

Home Directories

Each Linux account is associated with a home directory. When you login to your Linux account, by default, your current working directory will be your home directory. UNIX provides a short-hand symbol for your home directory, the tilde character, ~. So, to see a list of files in your home directory, you can execute:

ls ~

For Further Information

To learn more about Linux file and directory permissions, search on the Web or use the Linux man command to research the chmod and umask commands.