Making Bash Scripts Executable with Chmod in Linux

Avatar

By squashlabs, Last Updated: October 21, 2023

Making Bash Scripts Executable with Chmod in Linux

What are the different permissions in Linux?

In Linux, file permissions determine the actions that can be performed on a file or directory by different users or groups. There are three basic permissions that can be assigned to a file or directory:

1. Read (r): This permission allows a user to view the contents of a file or list the files within a directory.

2. Write (w): This permission allows a user to modify the contents of a file or create, rename, or delete files within a directory.

3. Execute (x): This permission allows a user to execute a file (if it is a program or script) or access a directory (if it is a directory).

These permissions can be assigned to three different entities:

1. Owner: The owner is the user who created the file or directory. The owner can change the permissions and modify the contents of the file.

2. Group: The group is a collection of users who share common permissions on a file or directory. The group permissions apply to all members of the group.

3. Others: Others refers to all users who are not the owner or a member of the group. The permissions for others apply to all users who do not fall into the owner or group category.

Related Article: How To Echo a Newline In Bash

Examples:

To view the permissions of a file or directory, you can use the ls command with the -l option, which displays the long format listing:

$ ls -l file.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt

In the above example, the file file.txt has the following permissions:
– The owner has read and write permissions (rw-).
– The group has read-only permissions (r--).
– Others have read-only permissions (r--).

How do I check the current permissions of a file in Linux?

To check the current permissions of a file or directory in Linux, you can use the ls command with the -l option. This will display the long format listing, which includes the permissions, among other details, of the file or directory.

The output of the ls -l command includes a string of characters representing the permissions. The characters are arranged in groups of three, where each group represents the permissions for the owner, group, and others, in that order.

The permissions are represented by the following characters:
r: Read permission.
w: Write permission.
x: Execute permission.
-: No permission.

Examples:

To check the current permissions of a file, you can run the following command:

$ ls -l file.txt
-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt

In the output above, the permissions for the file file.txt are represented by the string -rw-r--r--. This means that the owner has read and write permissions, the group has read-only permissions, and others also have read-only permissions.

To check the current permissions of a directory, you can run the following command:

$ ls -ld directory
drwxr-xr-x 2 user group 4096 Jan 1 00:00 directory

In the output above, the permissions for the directory directory are represented by the string drwxr-xr-x. This means that the owner has read, write, and execute permissions, the group has read and execute permissions, and others also have read and execute permissions.

Related Article: How to Use If-Else Statements in Shell Scripts

How can I change the permissions of a file in Linux?

To change the permissions of a file or directory in Linux, you can use the chmod command. The chmod command allows you to modify the permissions for the owner, group, and others.

The chmod command uses a symbolic notation or an octal notation to specify the desired permissions. The symbolic notation is more flexible and easier to understand, while the octal notation is more concise and precise.

Examples:

To change the permissions of a file using symbolic notation, you can run the following command:

$ chmod u+r file.txt

In the above example, the u+r option adds the read permission to the owner of the file file.txt. The u represents the owner, and r represents the read permission.

To change the permissions of a directory using symbolic notation, you can run the following command:

$ chmod g+wx directory

In the above example, the g+wx option adds the write and execute permissions to the group of the directory directory. The g represents the group, w represents the write permission, and x represents the execute permission.

To change the permissions of a file or directory using octal notation, you can run the following command:

$ chmod 644 file.txt

In the above example, the 644 value represents the desired permissions for the file file.txt. Each digit in the octal value corresponds to the permissions for the owner, group, and others, in that order. The first digit represents the owner’s permissions, the second digit represents the group’s permissions, and the third digit represents the permissions for others.

The values for each digit in the octal notation are:
0: No permission.
1: Execute permission.
2: Write permission.
3: Write and execute permissions.
4: Read permission.
5: Read and execute permissions.
6: Read and write permissions.
7: Read, write, and execute permissions.

In the example above, the octal value 644 represents the following permissions:
– The owner has read and write permissions (6).
– The group has read-only permissions (4).
– Others have read-only permissions (4).

What does the ‘chmod’ command do in Linux?

The chmod command in Linux is used to change the permissions of a file or directory. The word “chmod” stands for “change mode”, where “mode” refers to the permissions of a file or directory.

The chmod command allows you to specify the desired permissions for the owner, group, and others using either symbolic notation or octal notation.

The chmod command can be used by the owner of a file or directory, as well as by the root user.

Related Article: Executing a Bash Script with Multivariables in Linux

Examples:

To change the permissions of a file using symbolic notation, you can run the following command:

$ chmod u=rw file.txt

In the above example, the u=rw option sets the read and write permissions for the owner of the file file.txt. The u represents the owner, and rw represents the read and write permissions.

To change the permissions of a directory using octal notation, you can run the following command:

$ chmod 755 directory

In the above example, the 755 value sets the permissions for the directory directory. The first digit (7) represents the owner’s permissions, which are read, write, and execute. The second and third digits (5) represent the group’s and others’ permissions, which are read and execute.

How do I make a bash script executable in Linux?

To make a Bash script executable in Linux, you need to change the permissions of the script file to include the execute permission. Once the execute permission is set, you can run the script directly from the command line.

There are different ways to make a Bash script executable in Linux, including using the chmod command with symbolic or octal notation, or by using the +x option with the chmod command.

Examples:

To make a Bash script executable using symbolic notation, you can run the following command:

$ chmod +x script.sh

In the above example, the +x option adds the execute permission to the owner, group, and others of the script file script.sh.

To make a Bash script executable using octal notation, you can run the following command:

$ chmod 755 script.sh

In the above example, the 755 value sets the permissions for the script file script.sh. The first digit (7) represents the owner’s permissions, which are read, write, and execute. The second and third digits (5) represent the group’s and others’ permissions, which are read and execute.

Related Article: How to Manipulate Quotes & Strings in Bash Scripts

What are the different ways to make a Bash script executable in Linux?

There are multiple ways to make a Bash script executable in Linux, including using the chmod command, adding a shebang line at the beginning of the script file, or executing the script using the Bash interpreter.

Using the chmod command:

To make a Bash script executable using the chmod command, you can run one of the following commands:

$ chmod +x script.sh

or

$ chmod u+x script.sh

In both examples, the +x option adds the execute permission to the owner of the script file script.sh.

Adding a shebang line:

Another way to make a Bash script executable is by adding a shebang line at the beginning of the script file. The shebang line is a special comment that tells the system which interpreter to use to execute the script.

To add a shebang line to a Bash script, you can include the following line at the beginning of the script file:

#!/bin/bash

This line tells the system to use the Bash interpreter to execute the script.

After adding the shebang line, you need to make the script file executable using the chmod command:

$ chmod +x script.sh

Related Article: How to Import JSON from a Bash Script on Linux

Executing the script using the Bash interpreter:

Alternatively, you can make a Bash script executable by executing it using the Bash interpreter directly. This method does not require changing the permissions of the script file.

To execute a Bash script using the Bash interpreter, you can run the following command:

$ bash script.sh

In the above example, the script file script.sh is executed using the Bash interpreter.

Can I use symbolic notation with the ‘chmod’ command in Linux?

Yes, you can use symbolic notation with the chmod command in Linux to change the permissions of a file or directory.

Symbolic notation allows you to specify the desired permissions using a combination of letters and operators.

The letters represent the entities for which you want to change the permissions:
u: The owner of the file or directory.
g: The group of the file or directory.
o: Others (users who are neither the owner nor a member of the group).
a: All entities (equivalent to ugo).

The operators are used to add or remove permissions:
+: Add permissions.
-: Remove permissions.
=: Set permissions.

Examples:

To add the execute permission to the owner of a file using symbolic notation, you can run the following command:

$ chmod u+x file.txt

In the above example, the u+x option adds the execute permission to the owner of the file file.txt.

To remove the write permission from the group of a file using symbolic notation, you can run the following command:

$ chmod g-w file.txt

In the above example, the g-w option removes the write permission from the group of the file file.txt.

To set the read and execute permissions for all entities of a directory using symbolic notation, you can run the following command:

$ chmod a=rx directory

In the above example, the a=rx option sets the read and execute permissions for all entities of the directory directory, while removing any other permissions.

Related Article: Appending Dates to Filenames in Bash Scripts

How do I add execute permission to a bash script in Linux?

To add the execute permission to a Bash script in Linux, you can use the chmod command with symbolic or octal notation.

Using symbolic notation, you can add the execute permission to the owner, group, and others of the script file.

Using octal notation, you can set the permissions for the owner, group, and others of the script file, including the execute permission.

Examples:

To add the execute permission to the owner, group, and others of a Bash script using symbolic notation, you can run the following command:

$ chmod +x script.sh

In the above example, the +x option adds the execute permission to the owner, group, and others of the script file script.sh.

To set the execute permission for the owner, group, and others of a Bash script using octal notation, you can run the following command:

$ chmod 755 script.sh

In the above example, the 755 value sets the permissions for the script file script.sh. The first digit (7) represents the owner’s permissions, which are read, write, and execute. The second and third digits (5) represent the group’s and others’ permissions, which are read and execute.

What is the octal notation used in chmod command in Linux?

The octal notation used in the chmod command in Linux is a concise way to specify the permissions of a file or directory using a base-8 numerical system.

In the octal notation, each digit represents the permissions for the owner, group, and others, in that order.

The values for each digit in the octal notation are as follows:
0: No permission.
1: Execute permission.
2: Write permission.
3: Write and execute permissions.
4: Read permission.
5: Read and execute permissions.
6: Read and write permissions.
7: Read, write, and execute permissions.

To set the permissions using octal notation, you can assign a three-digit number to represent the permissions. Each digit corresponds to the permissions for the owner, group, and others, respectively.

Related Article: Formatting and Displaying Dates with Bash Scripts in Linux

Examples:

To set the read and write permissions for the owner, and read-only permissions for the group and others, you can use the octal value 644. The 6 represents the read and write permissions for the owner, while the 4 represents the read-only permissions for the group and others.

$ chmod 644 file.txt

To set the read, write, and execute permissions for the owner, and read and execute permissions for the group and others, you can use the octal value 755. The 7 represents the read, write, and execute permissions for the owner, while the 5 represents the read and execute permissions for the group and others.

$ chmod 755 script.sh

The recommended permissions for a Bash script in Linux depend on the specific use case and security requirements. However, a common recommendation is to set the permissions to 755.

Setting the permissions to 755 gives the owner read, write, and execute permissions, while giving the group and others read and execute permissions.

This permission setup allows the owner to modify the script and execute it, while allowing other users to execute the script.

Example:

To set the recommended permissions for a Bash script to 755, you can use the following command:

$ chmod 755 script.sh

Related Article: Locating and Moving Files in Bash Scripting on Linux

Additional Resources

What is a bash script?
How do I change permissions using chmod?

How to Make a Bash Script Continue to Run After an Error

Bash scripts are a powerful tool for automating tasks in Linux systems. However, when errors occur, scripts often stop running, causing delays and inefficiencies. In... read more

How to Check the Success of a Bash Script

Learn how to check the success of a bash script execution in a Linux environment. Dive into topics such as bash script success check, error handling, determining if a... read more

How to Extract Numbers from Strings in Bash

Learn how to extract numbers from strings using bash scripting on Linux. This article covers various techniques such as regular expressions, awk, cut, tr command, expr... read more

How to Use Getopts in Bash: A Practical Example

Getopts is a powerful tool in Bash that allows you to handle command-line options and arguments in your scripts. This article will guide you through a practical example... read more

How to Replace a Substring in a String in a Shell Script

Replacing substrings in a string within a shell script can be easily achieved using the sed command or parameter expansion. This article provides simple and practical... read more

How to Choose the Preferred Bash Shebang in Linux

Choosing the right bash shebang in the Linux environment can greatly impact the performance and compatibility of your scripts. This simple guide presents two options for... read more