File Permissions in Linux: A Complete Guide

2 min read .

File permissions are a crucial aspect of the Linux operating system. This system controls who can read, write, or execute specific files, thereby maintaining the security and integrity of data within the system.

Basics of File Permissions

In Linux, every file and directory has three basic types of permissions:

  1. Read (r): Permission to read the contents of a file or view the contents of a directory.
  2. Write (w): Permission to modify or delete a file or change the contents of a directory.
  3. Execute (x): Permission to run a file as a program or script, or access the contents of a directory.

Three Categories of Users

These permissions are applied to three categories of users:

  • Owner: The user who owns the file or directory.
  • Group: The group of users associated with the file or directory.
  • Others: All other users who are neither the owner nor a member of the group.

Viewing File Permissions

You can view file permissions using the ls -l command. The output will look like this:

-rwxr-xr-x 1 user group 4096 Aug 18 10:00 file.txt

Here, rwxr-xr-x represents the file permissions, where:

  • The first three characters (rwx) are permissions for the owner
  • The next three characters (r-x) are permissions for the group
  • The last three characters (r-x) are permissions for others

Changing File Permissions

To change file permissions, use the chmod command. There are two ways to use chmod:

  1. Symbolic Mode: Uses symbols like + (add permission), - (remove permission), and = (set exact permission).

    • Example: chmod u+x file.txt (adds execute permission for the owner)
  2. Numeric Mode: Uses numbers to represent permissions (4 for read, 2 for write, 1 for execute).

    • Example: chmod 755 file.txt (sets rwx for the owner, rx for the group and others)

Changing File Owner and Group

You can also change the owner and group of a file using the chown command:

  1. Change Owner and Group

    sudo chown owner:group file_name

    Example:

    sudo chown alice:dev_team file.txt

    This command will change the file owner to alice and the group to dev_team.

  2. Change Only Owner

    sudo chown owner file_name

    Example:

    sudo chown alice file.txt

    This command will only change the file owner to alice, without changing the group.

  3. Change Only Group

    sudo chgrp group file_name

    Example:

    sudo chgrp dev_team file.txt

    This command will only change the file group to dev_team, without changing the owner.

Marking Files as Executable

To make a file executable (so it can be run as a program or script), you need to grant execute permission. You can use chmod to do this:

  • Add Execute Permission for the Owner

    chmod u+x file_name

    Example:

    chmod u+x script.sh

    This command will add execute permission for the owner of the script.sh file.

  • Add Execute Permission for All Users

    chmod a+x file_name

    Example:

    chmod a+x program

    This command will grant execute permission to all users for the program file.

Conclusion

Understanding and managing file permissions properly is crucial for maintaining the security of your Linux system. By mastering these basic concepts and commands, such as chmod for changing permissions, chown for changing ownership and group, and marking files as executable, you can control access to files and directories more effectively.

Always be cautious when changing file permissions, especially for critical system files, as improper changes can affect the functionality of your operating system.

Tags:
Linux

See Also

chevron-up