The Academy is free // the war room is optional
DAEMONCORE // ACADEMY
← FIELD NOTES

Understanding Linux file permissions: rwx, octal, and setuid

2026.09.07//8 MIN READlinuxauthorizationsecurity-architecturefundamentals

// The Basics of File Permissions

Linux file permissions govern access to files and directories. They dictate who can read, write, or execute a file, and understanding these permissions is fundamental for effective system management.

The rwx Model

File permissions are represented as a combination of three types of access:

  • r - Read permission
  • w - Write permission
  • x - Execute permission

These permissions are assigned to three categories of users:

  • Owner - The user who owns the file
  • Group - A group of users who share access rights
  • Others - All other users on the system

When you list files using ls -l, you'll see something like this:

-rwxr-xr-- 1 user group 1234 Jan  1 12:00 example_file

Breaking this down:

  • The first character indicates the type of file (- for a regular file, d for a directory).
  • The next three characters (rwx) show the owner's permissions (read, write, execute).
  • The following three (r-x) indicate the group's permissions (read, no write, execute).
  • The last three (r--) reveal the permissions for others (read only).

Understanding Octal Notation

Permissions can also be represented in octal format, which is common in scripts and configuration files. Each permission type correlates to a number:

  • Read = 4
  • Write = 2
  • Execute = 1

The sum of these values forms the octal representation. For instance, if a file has rwxr-xr--, the octal equivalent is:

  • Owner: rwx = 4 + 2 + 1 = 7
  • Group: r-x = 4 + 0 + 1 = 5
  • Others: r-- = 4 + 0 + 0 = 4

Thus, the octal notation is 754.

You can change permissions using the chmod command. For example, to set permissions to 754, run:

chmod 754 example_file

The Setuid Bit

The setuid (set user ID) bit is a special permission that allows users to execute a file with the permissions of the file owner. This is often used for executable files that require elevated privileges, such as passwd.

To set the setuid bit, use:

chmod u+s example_file

When this bit is set, the permission string changes. For example, if example_file had rwsr-xr--, the s in place of x indicates that the file runs with the owner's permissions. This can be checked using:

ls -l example_file

Common Mistakes to Avoid

  • Over-permissioning: Giving files overly permissive access can be a security risk. For instance, setting a script to 777 (full permissions for everyone) exposes it to modification by any user.
  • Ignoring setuid implications: Improperly set setuid permissions can lead to privilege escalation vulnerabilities. Always audit scripts or binaries that have setuid enabled.

Defensive Implications

To secure your system, adhere to the principle of least privilege. Ensure users have only the permissions they need and regularly review permissions, especially for sensitive files. Use tools like find to locate files with setuid bits:

find / -perm -4000 -type f 2>/dev/null

This command searches for all files with the setuid bit set, helping you identify potential vulnerabilities.

Checklist for Managing File Permissions

1. Evaluate permissions: Regularly check file and directory permissions using ls -l. 2. Set correct permissions: Use chmod to modify permissions based on user needs. 3. Audit setuid files: Identify and review setuid files to ensure they’re necessary and secure. 4. Implement a review process: Schedule regular reviews of user permissions and file access rights.

In conclusion, mastering Linux file permissions is a fundamental skill for effective system administration and security. This knowledge not only helps manage user access but also plays a critical role in preventing security vulnerabilities. Remember that DaemonCore Academy's curriculum is free, and all techniques and practices discussed here should be tested in a disposable lab environment you control.