OnWorks Linux and Windows Online WorkStations

Logo

Free Hosting Online for WorkStations

< Previous | Contents | Next >

The application of symbolic links is widespread. They are often used to save disk space, to make a copy of a file in order to satisfy installation requirements of a new program that expects the file to be in another location, they are used to fix scripts that suddenly have to run in a new environment and can generally save a lot of work. A system admin may decide to move the home directories of the users to a new location, disk2 for instance, but if he wants everything to work like before, like the /etc/passwd file, with a minimum of effort he will create a symlink from /home to the new location /disk2/home.‌


image


3.4. File security


3.4.1. Access rights: Linux's first line of defense


The Linux security model is based on the one used on UNIX systems, and is as rigid as the UNIX security model (and sometimes even more), which is already quite robust. On a Linux system, every file is owned by a user and a group user. There is also a third category of users, those that are not the user owner and don't belong to the group owning the file. For each category of users, read, write and execute permissions can be granted or denied.


We already used the long option to list files using the ls -l command, though for other reasons. This command also displays file permissions for these three user categories; they are indicated by the nine characters that follow the first character, which is the file type indicator at the beginning of the file properties


line. As seen in the examples below, the first three characters in this series of nine display access rights for the actual user that owns the file. The next three are for the group owner of the file, the last three for other users. The permissions are always in the same order: read, write, execute for the user, the group and the others.

image

Some examples:


marise:~> ls -l To_Do

-rw-rw-r-- 1 marise users

5 Jan 15 12:39 To_Do

marise:~> ls -l To_Do

-rw-rw-r-- 1 marise users


marise:~> ls -l /bin/ls

-rwxr-xr-x 1 root root 45948 Aug 9 15:01 /bin/ls*

marise:~> ls -l /bin/ls

-rwxr-xr-x 1 root root 45948 Aug 9 15:01 /bin/ls*

The first file is a regular file (first dash). Users with user name marise or users belonging to the group users can read and write (change/move/delete) the file, but they can't execute it (second and third dash). All other users are only allowed to read this file, but they can't write or execute it (fourth and fifth dash).


The second example is an executable file, the difference: everybody can run this program, but you need to be

root to change it.


The Info pages explain how the ls command handles display of access rights in detail, see the section What information is listed.


For easy use with commands, both access rights or modes and user groups have a code. See the tables below.


Table 3-7. Access mode codes


Code

Meaning

0 or -

The access right that is supposed to be on this place is not granted.

4 or r

read access is granted to the user category defined in this place

2 or w

write permission is granted to the user category defined in this place

1 or x

execute permission is granted to the user category defined in this place


Table 3-8. User group codes


Code

Meaning

u

user permissions

g

group permissions

o

permissions for others

This straight forward scheme is applied very strictly, which allows a high level of security even without network security. Among other functions, the security scheme takes care of user access to programs, it can serve files on a need-to-know basis and protect sensitive data such as home directories and system configuration files.


You should know what your user name is. If you don't, it can be displayed using the id command, which also displays the default group you belong to and eventually other groups of which you are a member:


tilly:~> id

uid=504(tilly) gid=504(tilly) groups=504(tilly),100(users),2051(org)

tilly:~> id

uid=504(tilly) gid=504(tilly) groups=504(tilly),100(users),2051(org)

Your user name is also stored in the environment variable USER:


tilly:~> echo $USER

tilly

tilly:~> echo $USER

tilly


image


Top OS Cloud Computing at OnWorks: