Making Bash Scripts Executable with Chmod in Linux

Avatar

By squashlabs, Last Updated: Oct. 22, 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 Handle New Lines in Bash Scripts

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 directorydrwxr-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 Set LD_LIBRARY_PATH in Linux

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.

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.

Related Article: Creating Incremental Backups with Bash Scripts in Linux

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.

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.

Related Article: How to Loop Through an Array of Strings in Bash

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

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: How to Concatenate String Variables in Bash

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.

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

Related Article: How To Use a .sh File In Linux

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

Additional Resources



- What is a bash script?

- How do I change permissions using chmod?

How to Handle Quotes with Md5sum in Bash Scripts

When working with md5sum bash scripts in Linux, it is important to understand how to handle quotes. This article provides a thorough look at the best… read more

Executing Bash Scripts Without Permissions in Linux

This guide explores various methods to run bash scripts in a Linux system without requiring permissions. The article covers topics such as executing … read more

Using a Watchdog Process to Trigger Bash Scripts in Linux

Setting a watchdog process to trigger bash scripts in Linux can greatly enhance automation and monitoring capabilities. Learn how to create a watchdo… read more

Executing Bash Scripts at Startup in Ubuntu Linux

Learn how to configure your Ubuntu Linux system to automatically run a bash script at startup. This article covers various methods, including using s… read more

Locating and Moving Files in Bash Scripting on Linux

Learn how to locate and move files in Linux using bash scripting. This article covers file search, manipulation, handling, and navigation techniques,… read more

Comparing Strings in Bash Scripts Irrespective of Quotes

Learn how to compare strings in a bash script, even when quotes are involved. This article covers techniques for string comparison without quotes, ha… read more

How to Check If a File Copy is Completed with a Bash Script

As software engineering continues to evolve, the need to efficiently check if a file copy operation is complete in a Linux bash script becomes increa… read more

How to Continue a Bash Script Post cURL Command

When working with bash scripts in Linux, it's important to know how to continue your script after executing a curl command. This article will guide y… read more

How to Use Grep Command in Linux Unix

Learn how to use the grep command in Linux Unix with this tutorial. From understanding the syntax and regular expressions to advanced techniques like… read more

Applying Patches with Bash Scripts in Linux

Applying patches to Bash scripts in a Linux environment is an important aspect of maintaining the security and functionality of your system. This art… read more