Complete Guide to File Permissions in Ubuntu

If you’ve ever tried to open, modify, or run a file in Ubuntu and encountered a “permission denied” error, you’re in the right place. File permissions in Ubuntu play a key role in keeping your system secure and organized. Whether you’re a beginner or someone looking to sharpen your skills, understanding file permissions is essential to take control of your Ubuntu system.

In this blog post, I will everything you need to know about file permissions in Ubuntu. By the end, you’ll not only know how to read file permissions but also how to change them based on your needs.

Should we start now? Okay let’s start now:

What Are File Permissions in Ubuntu?

Every file and directory in Ubuntu has a set of permissions. These permissions control who can read, write, and execute the file.

Ubuntu, like all Linux distributions, is built with security in mind, and file permissions ensure that only authorized users can access or modify files.

File Permissions Categories

File permissions are broken down into three categories:

  1. User (Owner): The person who created the file or directory.
  2. Group: A collection of users who share similar access rights.
  3. Others: Anyone else with access to the system who isn’t the owner or part of the group.

Each of these categories has three types of permissions:

  • Read (r): You can view the contents of the file or directory.
  • Write (w): You can modify or delete the file or directory.
  • Execute (x): You can run the file as a program or enter the directory.

How to View File Permissions

To view the permissions of a file or directory, open your terminal and use the following command:

ls -l

This will display a list of files with their corresponding permissions. Here’s an example of what the output might look like:

-rwxr-xr--

Let’s break this down:

  • The first character (-) indicates the type of file (- for a regular file, d for a directory).
  • The next three characters (rwx) are the permissions for the owner (read, write, execute).
  • The middle three characters (r-x) are the permissions for the group (read, execute, but no write).
  • The last three characters (r--) are the permissions for others (read-only).

Real-Life Example

Imagine you have a file named script.sh that you want to make executable by yourself but not by others. By checking its permissions using ls -l, you might see something like:

-rw-r--r-- 1 deepak deepak 512 Sep 30 12:00 script.sh

This means only you (the owner) can read and write the file, while others can only read it. However, if you want to run the script, you’ll need to modify the permissions, which we’ll cover in the next section.

How to Change File Permissions with chmod

The command chmod (change mode) allows you to change the permissions of a file or directory. You can use two methods: symbolic mode and numeric mode.

Symbolic Mode

In symbolic mode, you use letters to specify which permissions you want to add or remove.

Syntax

chmod [user/group/others][+/-][permission] filename

Examples

  • To give the owner execute permission:
chmod u+x script.sh
  • To remove write permission from others:
chmod o-w script.sh

In these examples:

  • u stands for the user (owner).
  • g is for the group.
  • o is for others.
  • + adds a permission.
  • - removes a permission.

Numeric Mode

Numeric mode uses numbers to represent permissions:

  • 4: Read (r)
  • 2: Write (w)
  • 1: Execute (x)

To combine permissions, you add the numbers together. For example, if you want the owner to have full permissions (read, write, execute), the group to have read and execute, and others to only have read permission, you would use:

chmod 755 script.sh

Here’s the breakdown:

  • 7 (4+2+1) = Owner can read, write, and execute.
  • 5 (4+1) = Group can read and execute.
  • 5 (4+1) = Others can read and execute.

Table: Common chmod Values

Permission TypeNumeric ValuePermissions Description
rwxr-xr-x755Owner can read, write, execute; group and others can read and execute
rw-r--r--644Owner can read and write; group and others can only read
rwx------700Only the owner has full access

Changing Ownership with chown

In some cases, you may need to change the owner of a file or directory. This is where the chown command comes in handy.

Syntax

chown [new_owner] filename

To change both the owner and group, use this syntax:

chown [new_owner]:[new_group] filename

Example

chown john:developers project.txt

This command changes the owner of project.txt to john and assigns it to the developers group.

Advanced Permissions: Setuid, Setgid, and Sticky Bit

Beyond basic permissions, Ubuntu allows for more advanced settings like Setuid, Setgid, and the sticky bit. These are useful when you need to grant certain privileges under specific circumstances.

Setuid (Set User ID)

The Setuid bit allows a file to be executed with the owner’s permissions. It’s often used for system commands.

Example

chmod u+s filename

Setgid (Set Group ID)

Setgid is similar to Setuid but applies to the group. Files created in a directory with the Setgid bit will inherit the group of the directory, not the user who created them.

Example

chmod g+s directoryname

Sticky Bit

The sticky bit is useful for shared directories. It ensures that only the owner of a file can delete or modify it, even if others have write permission to the directory.

Example

chmod +t shared_directory

Frequently Asked Questions (FAQs)

1. What are the risks of setting permissions to 777?

Setting permissions to 777 grants everyone full access (read, write, execute), which is a security risk. It’s best to avoid using 777, especially on sensitive files or directories.

2. How can I quickly check file permissions?

Use the ls -l command to display file permissions in a directory. It’s a simple and effective way to review permissions at a glance.

3. What’s the difference between chmod and chown?

chmod is used to change permissions, while chown changes the ownership of a file or directory. Both are important for managing file access.

Conclusion

Understanding file permissions in Ubuntu is crucial for controlling who can access your files and directories. Whether you’re managing a personal project or administering a server, learning how to use chmod and chown will keep your system secure and functioning properly.

Now that you’ve gone through this complete guide, it’s time to put what you’ve learned into practice. Open up your terminal, check out some file permissions, and start making changes. Once you’re comfortable with the basics, you can explore more advanced options like Setuid and sticky bits to further customize your system.

Deepak Maurya

About the Author: Deepak Maurya

I hold a Computer Science degree, which built my skills in programming and system administration. Over time, my passion for Linux grew, not just for its tech power but because of the supportive community around it. Writing about Linux, especially Ubuntu, lets me share what I’ve learned. I understand how challenging it can be to start with something as flexible as Linux, so my aim is to simplify complex topics for everyone, no matter their skill level.

Full Bio »

Leave a Comment