Posted on August 11, 2023 by nexonhost
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