How to Securely Set File Permissions in Linux: A Step-by-Step Guide

In the world of Linux system administration, file permissions are crucial for maintaining security and ensuring that only authorized users can modify sensitive files. In this post, we’ll address a common scenario: how to ensure that a critical configuration file is editable only by the application owner. By the end of this guide, you’ll know how to set appropriate file permissions, utilize groups effectively, and validate your settings.

file permissions

Understanding Linux File Permissions

Before diving into the specifics, let’s recap how Linux file permissions work. Each file and directory in Linux has three types of permissions:

  • Read (r): Allows viewing the contents of the file.
  • Write (w): Allows modifying the file.
  • Execute (x): Allows executing the file if it’s a script or binary.

These permissions can be assigned to three categories of users:

  • Owner: The user who owns the file.
  • Group: Users who are part of the file’s group.
  • Others: All other users on the system.

The Scenario: A Critical Configuration File

Suppose you have a critical configuration file located at /etc/myapp/config.conf, and it needs to be editable only by the user appowner. To achieve this, you’ll need to follow several steps to set the appropriate permissions.

Step 1: Verify Current Permissions

First, let’s check the current permissions of the file:

ls -l /etc/myapp/config.conf

You might see output like this:

-rw-r--r-- 1 root root 1234 Oct 16 12:00 config.conf

This output indicates that the file is currently readable and writable by the owner (root), readable by the group, and readable by others.

Step 2: Change the Ownership of the File

To ensure that only appowner can edit this file, you need to change the file’s ownership. Run the following command:

sudo chown appowner:appowner /etc/myapp/config.conf

Now, if you check the permissions again, it should look like this:

-rw-r--r-- 1 appowner appowner 1234 Oct 16 12:00 config.conf

Step 3: Set the Correct Permissions

Next, you need to modify the file permissions so that only the owner can write to the file. Use the following command:

sudo chmod 600 /etc/myapp/config.conf

This sets the permissions to:

  • Owner: Read and write (rw-)
  • Group: No permissions (---)
  • Others: No permissions (---)

To verify, run:

ls -l /etc/myapp/config.conf

The output should now look like this:

-rw------- 1 appowner appowner 1234 Oct 16 12:00 config.conf

Step 4: Understanding the Permissions

With these settings, only appowner can read or modify config.conf. If another user tries to access the file, they will receive a “permission denied” error. This is essential for protecting sensitive configuration files from unauthorized changes.

Example: Testing Permissions

To demonstrate, let’s create a test user and verify the permissions:

  1. Create a test user:
   sudo adduser testuser
  1. Try to read the configuration file:
   su - testuser
   cat /etc/myapp/config.conf

You should see:

   cat: /etc/myapp/config.conf: Permission denied

Step 5: Optional – Using Groups

If you have a scenario where you want to allow a group of users to edit the file while keeping others out, you can do the following:

  1. Create a group:
   sudo groupadd appgroup
  1. Add the appowner to the group:
   sudo usermod -aG appgroup appowner
  1. Change the group ownership of the file:
   sudo chown appowner:appgroup /etc/myapp/config.conf
  1. Set group write permissions:
   sudo chmod 660 /etc/myapp/config.conf

Now, members of appgroup can read and write to the file, while others cannot.

Step 6: Validate Permissions

Finally, to ensure that everything is configured correctly, you can run:

getfacl /etc/myapp/config.conf

This command will display the file’s ACL (Access Control List), helping you verify that permissions are set as intended.

Conclusion

By following the steps outlined in this guide, you can effectively secure critical configuration files in Linux, ensuring they are only editable by the application owner. Understanding file permissions is fundamental to Linux administration and security.

For more tips on Linux and system administration, visit GeekersHub.


External Resources