Experiment no. 4
Experiment no. 4
4
UNIX FILE SYSTEM
AIM:
(A) Study of UNIX file system (tree structure).
(B) Study of .bashrc, /etc/bashrc and environment variables.
(C) Study File and Directory Permissions.
OBJECTIVE:
1. To introduce Basic Unix general purpose Commands.
2. To learn network Unix commands.
3. To learn file management and permission advance commands.
THEORY:
(A) Study of UNIX file system (tree structure).
Unix keeps track of files and directories of files using a file system. When you log in to your
Unix account, you are placed in your "home" directory. Your home directory thus becomes your
"present working directory" when you log in. In your home directory, you can create files and
subdirectories. And in the subdirectories you create, you can create more subdirectories.
The commands that you issue at the Unix prompt relate to the files and folders and resources
available from your present working directory. You certainly use and can refer to resources
outside of your current working directory. To understand how this works, you need to know how
the Unix file system is structured.
Page | 1
Directory
Description
or file
/ The slash / character alone denotes the root of the filesystem tree.
Stands for binaries and contains certain fundamental utilities, such as ls or cp, that
are needed to mount /usr, when that is a separate filesystem, or to run in one-user
/bin
(administrative) mode when /usr cannot be mounted. In System V.4, this is a
symlink to /usr/bin.
Contains all the files needed for successful booting process. In Research Unix, this
/boot
was one file rather than a directory.[13]
Stands for devices. Contains file representations of peripheral devices and pseudo-
/dev
devices. See also: Linux Assigned Names and Numbers Authority
Contains system-wide configuration files and system databases; the name stands for
/etc et cetera.[13] Originally also contained "dangerous maintenance utilities" such as
init,[14] but these have typically been moved to /sbin or elsewhere.
Contains user home directories on Linux and some other systems. In the original
version of Unix, home directories were in /usr instead. [15] Some systems use or have
/home
used different locations still: macOS has home directories in /Users, older versions
of BSD put them in /u, FreeBSD has /usr/home.
Originally essential libraries: C libraries, but not Fortran ones.[13] On modern
systems, it contains the shared libraries needed by programs in /bin, and possibly
/lib
loadable kernel module or device drivers. Linux distributions may have variants
/lib32 and /lib64 for multi-architecture support.
/media Default mount point for removable devices, such as USB sticks, media players, etc.
Stands for mount. Empty directory commonly used by system administrators as a
/mnt
temporary mount point.
Contains locally installed software. Originated in System V, which has a package
/opt
manager that installs software to this directory (one subdirectory per package). [16]
/proc procfs virtual filesystem showing information about processes as files.
The home directory for the superuser root - that is, the system administrator. This
account's home directory is usually on the initial filesystem, and hence not in /home
(which may be a mount point for another filesystem) in case specific maintenance
/root
needs to be performed, during which other filesystems are not available. Such a case
could occur, for example, if a hard disk drive suffers physical failures and cannot be
properly mounted.
Stands for "system (or superuser) binaries" and contains fundamental utilities, such
/sbin
as init, usually needed to start, maintain and recover the system.
/srv Server data (data for services provided by system).
/sys In some Linux distributions, contains a sysfs virtual filesystem, containing
Page | 2
information related to hardware and the operating system. On BSD systems,
commonly a symlink to the kernel sources in /usr/src/sys.
A place for temporary files not expected to survive a reboot. Many systems clear
/tmp
this directory upon startup or use tmpfs to implement it.
The Unix kernel in Research Unix and System V.[13] With the addition of virtual
/unix
memory support to 3BSD, this got renamed /vmunix.
The "user file system": originally the directory holding user home directories, [15] but
already by the Third Edition of Research Unix, ca. 1973, reused to split the
operating system's programs over two disks (one of them a 256K fixed-head drive)
so that basic commands would either appear in /bin or /usr/bin. [17] It now holds
/usr
executables, libraries, and shared resources that are not system critical, like the X
Window System, KDE, Perl, etc. In older Unix systems, user home directories
might still appear in /usr alongside directories containing programs, although by
1984 this depended on local customs.[13]
Stores the development headers used throughout the system. Header files are mostly
/include used by the #include directive in C language, which historically is how the name of
this directory was chosen.
Stores the needed libraries and data files for programs stored within /usr or
/lib
elsewhere.
Holds programs meant to be executed by other programs rather than by users
directly. E.g., the Sendmail executable may be found in this directory. [18] Not
/libexec
present in the FHS until 2011;[19] Linux distributions have traditionally moved the
contents of this directory into /usr/lib, where they also resided in 4.3BSD.
Resembles /usr in structure, but its subdirectories are used for additions not part of
/local the operating system distribution, such as custom programs or files from a BSD
Ports collection. Usually has subdirectories such as /usr/local/lib or /usr/local/bin.
Architecture-independent program data. On Linux and modern BSD derivatives, this
/share directory has subdirectories such as man for manpages, that used to appear directly
under /usr in older versions.
Stands for variable. A place for files that may change often - especially in size, for
/var
example e-mail sent to users on the system, or process-ID lock files.
/log Contains system log files.
The place where all incoming mails are stored. Users (other than root) can access
/mail
their own mail only. Often, this directory is a symbolic link to /var/spool/mail.
/spool Spool directory. Contains print jobs, mail spools and other queued tasks.
The /var/tmp directory is a place for temporary files which should be preserved
/tmp
between system reboots.
Page | 3
(B) Study of .bashrc, /etc/bashrc and environment variables.
.bashrc is a shell script that Bash runs whenever it is started interactively. It initializes an
interactive shell session. You can put any command in that file that you could type at the
command prompt. BASH stands for Bourne Again Shell.
For example open a terminal window and enter the following command:
bash
Now within the same window enter this command:
bash
Every time you open a terminal window the bashrc file is performed.
The .bashrc file is a good place therefore to run commands that you want to run every single time
you open a shell.
As an example open the .bashrc file using nano as follows:
nano ~/.bashrc
At the end of the file enter the following command:
echo "Hello $USER"
Save the file by pressing CTRL and O and then exit nano by pressing CTRL and X.
Within the terminal window run the following command:
bash
The word "Hello" should be displayed along with the username you are logged in as.
Page | 4
Owner permissions − The owner's permissions determine what actions the owner of the file can
perform on the file.
Group permissions − The group's permissions determine what actions a user, who is a member
of the group that a file belongs to, can perform on the file.
Other (world) permissions − The permissions for others indicate what action all other users can
perform on the file.
Here, the first column represents different access modes, i.e., the permission associated with a
file or a directory.
The permissions are broken into groups of threes, and each position in the group denotes a
specific permission, in this order: read (r), write (w), execute (x) −
The first three characters (2-4) represent the permissions for the file's owner. For
example, -rwxr-xr-- represents that the owner has read (r), write (w) and execute (x)
permission.
The second group of three characters (5-7) consists of the permissions for the group to
which the file belongs. For example, -rwxr-xr-- represents that the group has read (r) and
execute (x) permission, but no write permission.
The last group of three characters (8-10) represents the permissions for everyone else. For
example, -rwxr-xr-- represents that there is read (r) only permission.
Page | 5
Execute Executing a directory doesn't really make sense, so think of this as a traverse
permission. A user must have execute access to the bin directory in order to execute the ls or the
cd command.
Changing Permissions
To change the file or the directory permissions, you use the chmod (change mode) command.
There are two ways to use chmod — the symbolic mode and the absolute mode.
Here's an example using testfile. Running ls -1 on the testfile shows that the file's permissions
are as follows −
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Then each example chmod command from the preceding table is run on the testfile, followed
by ls –l, so you can see the permission changes −
Page | 6
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Here's how you can combine these commands on a single line −
The second way to modify permissions with the chmod command is to use a number to specify
each set of permissions for the file.
Each permission is assigned a value, as the following table shows, and the total of each set of
permissions provides a number for that set.
0 No permission ---
Page | 7
Here's an example using the testfile. Running ls -1 on the testfile shows that the file's
permissions are as follows −
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Then each example chmod command from the preceding table is run on the testfile, followed
by ls –l, so you can see the permission changes −
While creating an account on Unix, it assigns a owner ID and a group ID to each user. All the
permissions mentioned above are also assigned based on the Owner and the Groups.
Two commands are available to change the owner and the group of files −
chown − The chown command stands for "change owner" and is used to change the
owner of a file.
chgrp − The chgrp command stands for "change group" and is used to change the
group of a file.
Changing Ownership
The chown command changes the ownership of a file. The basic syntax is as follows −
Page | 8
$
Changes the owner of the given file to the user amrood.
NOTE − The super user, root, has the unrestricted capability to change the ownership of any
file but normal users can change the ownership of only those files that they own.
The chgrp command changes the group ownership of a file. The basic syntax is as follows −
OUTCOME:
1. Identified the basic Unix general purpose commands.
2. Studied how to change the ownership and file permissions using advance Unix
commands.
3. Applied basic commands for administrative task.
Page | 9