In Linux, you need extra file permissions to do tasks beyond basic read, write, and execute rules. Special permission bits, such as SUID (Set User ID) and SGID (Set Group ID) and SGID (Set Group ID) provide extra permissions that allow you to have functionality for controlling access and execution. The SGID Linux bit is basically useful when you want files or directories to inherit group ownership, which ensures collaborative work in a multi-user environment.
In this guide, we will walk through what SGID Linux really means, the difference between SGID and SUID, and security considerations.
Difference Between SUID and SGID Linux
Both SUID (Set User ID) and SGID (Set Group ID) are special permission bits, but here is how they both serve different purposes.
- SUID (Set User ID):
When SUID is applied to an executable file, it allows the program to be executed without needing the file owner’s privileges instead of the user running it. For example, the passwd command runs only if the user has the root privileges via SUID so normal users can update their passwords.
- SGID (Set Group ID):
When you apply SGID to an executable file, it makes the program run with the file’s group permissions instead of the user group. On directories, SGID ensures that the new files and subdirectories inherit the parent directory group, making collaboration easy.
How SGID Works in Linux
The SGID Linux, Set Group ID but modifies the way files and directories handle group permissions.
Get exclusive access to all things tech-savvy, and be the first to receive
the latest updates directly in your inbox.
- On files: When a user executes a file in Linux with the SGID bit set, the program runs with the file’s group permissions, but not the primary group.
- On directories: New files and subdirectories created inside will get all the parent directory’s group, instead of the default user group. This is mainly useful when you are working with shared project directories where multiple users are in constant need of group access.
Example: In a shared development folder with SGID enabled, every new file will automatically belong to the same group, ensuring seamless collaboration.
How to Set the SGID Bit in Linux
You can set the SGID bit using the chmod command:
- On a file:
chmod g+s filename
- On a directory:
chmod g+s dirname
This adds the SGID permission (s) to the group section.
Example:
ls -l
drwxr-sr-x 2 user devs 4096 Sep 11 10:00 shared_dir
Here, the s in r-s indicates the SGID bit is active for the group.
Verifying SGID Permissions
Finally, verify if the SGID bit permissions are activated, to do so use the ls -l:

- On files: Look for an s in the group’s execute field. Example:
-rwxr-sr-x 1 root staff 12345 Sep 11 09:30 myscript.sh
- On directories: SGID shows up as r-s in the group permission field. Example:
drwxr-sr-x 2 user devs 4096 Sep 11 10:00 shared_dir
You can also use the numeric notation:
- Regular group execution is x → value 1.
- SGID adds 2000 to the permission value.
Example:
chmod 2755 dirname
This sets rwxr-sr-x with SGID enabled.
Practical Examples of SGID Usage
To truly understand the practical examples of SGID Linux usage, you first need to understand the common use cases, which are:
- Collaboration; it ensures consistent group ownership in team directories.
- Controlled Access; it allows you group level access and execution.
- Shared Resources; it helps you manage the resources efficiently when multiple users are contributing to the files.
- System Administration; enforcing group policies is easy by adding them to /var, /srv, or other shared directories.
Now onto the practical examples:
- Shared Project Directory:
Suppose your team needs a shared folder /projects/teamA. Setting SGID ensures that all the new files created automatically belong to teamA.
sudo chown :teamA /projects/teamA
sudo chmod g+s /projects/teamA
- Group-Based Scripts
A script usually owned by group staff with SGID enabled will always execute with the staff group permissions, even if run by another user in the group.
- University Labs or Research Environments
Students who are working on a shared dataset can use SGID Linux directories to ensure that all files are accessible to the research group.
Security Implications of SGID
Even though SGID Linux is pretty useful, it can be highly risky and come with security concerns if not used with caution.
- Privilege Misuse: If applied to sensitive executables, users may gain unintended group privileges.
- Data Leakage: Improper group settings may allow unauthorized users to read or modify files.
- Attack Surface Expansion: Exploitable SGID programs can be leveraged by attackers to escalate privileges within a group.
Best Practices for Using SGID
Here are a few things to keep in mind when you are working with SGID Linux;
- Use SGID on directories for collaboration, but not on executables.
- Apply SGID Linux on only trusted scripts and binaries.
- Combine SGID Linux with proper group management sermod, gpasswd).
- Regularly audit permissions with tools like find or ls:
find / -perm /2000 -type f 2>/dev/null - Avoid using SGID Linux on sensitive systems that are not required.
Conclusion
The SGID Linux bit is one of the most powerful utilities in managing group permissions in collaborative team environments. By making sure that new files and subdirectories behave in the same manner as the parent directory, the SGID tools help with easy and quick collaboration.
FAQs
How do I check if a file or directory has SGID set in Linux?
Use the ls -l
command. If SGID is set on a directory, you’ll see an “s” in the group execute position. Example:
drwxr-sr-x 2 user group 4096 Sep 20 project_folder
What happens if I remove the SGID bit from a directory?
New files created inside the directory will inherit the primary group of the user creating them, instead of the directory’s group.
Is SGID the same across all Linux distributions?
Yes, the SGID mechanism is consistent across most Unix-like systems, including Ubuntu, Debian, and Fedora.