How to understand File Permissions in Bash Scripting.

In Bash scripting, file permissions refer to the access rights and restrictions that are assigned to files and directories. These permissions determine who can read, write, or execute a file or directory. Bash scripts often interact with files and directories, and understanding and managing file permissions is essential for ensuring data security and controlling access to your system’s resources.

What are the file permissions?

File permissions can be described as who, what, and which activities can be done to a file or directory.

  • who refers to users, groups, or others
  • what means to add, delete and set
  • which means read, write, and execute

Basic list views of file and their permissions

The command we use is ls -l to show us the list of files/directory in the current folder we are present. This screenshot is a common example to show permission (using normal centos7 )

From the above screenshot, let’s take a file let’s say password.generator.sh, and see its file permissions

-rwxr-xr-x    1 root     root             325 Jul 19 00:01 password.generator.sh

1     2      3

(r = read , w= write ,  x = execute)

  • 1 represents the permission of the user, they have all the 3 permission to read, write and execute the file
  • 2 represents the group to which the file is associated  it also has all the permissions
  • 3 represent others  which also contains all the 3 permissions

Manage file permissions

To manage file permissions, we have a command called chmod which we can use to change the permission of files and directories.

Method to use chmod command

There are 2 methods to use the command

  • Symbolic method
  • Numeric method

Symbolic Method

Syntax:

chmod whowhatwhich File|directory

  • who is u(user) , g(group) , o(other)
  • what is to  +(add) ,-(remove) ,+(set)
  • which  is r (read), w(write), x(execute)

Let’s see an example: –

Suppose you want to remove read and write permission of group and others from the file

chmod go-rw  <FILE>    (can be any file name)

Example:

chmod go-rw  test.sh The new permission will be like this

-rwxr-xr-x 1 root root 662 Jul 18 14:58 test.sh

Numeric method

Syntax:

chmod  ###  file|directory

#: represents each digit the permission for user, group and others.

4 =read   2=write  1 = execute 

Script for File permission

We can explain the file permission by creating a simple script to execute and change the permission of the file after understanding file permissions.

Step-By-Step commands in script:

Step 1. First, we create a file or check if an existing file is there as mentioned in the screenshot. If the file is not present then we execute the command

   touch <FILENAME>    (this will create a new file)

Step 2.  Our aim is to remove the write permission of others and groups as mentioned in the screenshot we will execute the command in the script

chmod 744 <FILENAME> 

Step 3. Finally, to check if permission is changed or not, we will use

ls -l 

The Script

#!/bin/bash

# script to change permission of file 

# File variable to store file.txt location 
FILE="file.txt"

# to check the file we want to change 
# exists or not
if [[ ! -e  "${FILE}" ]]
then
   echo "creating  ${FILE} file"
   touch file.txt
fi

# to remove  write permission of other and group of file
chmod 744 "${FILE}"

#to check if the permission are removed
ls -l  "${FILE}"

Now we will execute this script and check if it works.

./file_perm.sh

In writing script and executing it is important to check permission always after creating script ls  -l command