A Guide to User and Permission Management in Linux - DevOps Prerequisite 6

Aaditya KediyalAaditya Kediyal
6 min read

User and Permission Management in Linux

User and permission management is a fundamental aspect of Linux system administration. Properly managing users and permissions ensures that your system remains secure and operates smoothly. This article will cover everything a beginner needs to know about user and permission management in Linux, including how to create and manage users, understand and configure permissions, and implement best practices for system security.

Table of Contents

  1. Introduction to User Management

  2. Creating and Managing Users

    • Creating Users

    • Modifying Users

    • Deleting Users

  3. Group Management

    • Creating Groups

    • Modifying Groups

    • Adding Users to Groups

  4. Understanding Linux File Permissions

    • Basic Permissions

    • Changing Permissions

    • Special Permissions

  5. Managing File Permissions

    • chmod Command

    • chown and chgrp Commands

  6. Advanced Permission Management

    • Access Control Lists (ACLs)

    • Default ACLs

  7. Best Practices for User and Permission Management

  8. Conclusion

1. Introduction to User Management

Linux is a multi-user operating system, meaning multiple users can operate on the same system concurrently. Managing these users and their permissions is critical to ensuring system security and efficiency. User management involves creating, modifying, and deleting user accounts, while permission management involves setting the correct access rights to files and directories.

2. Creating and Managing Users

Creating Users

To create a new user in Linux, you use the useradd command. This command creates a new user account and sets up the user’s home directory.

sudo useradd -m newuser

The -m option creates a home directory for the user.

To set a password for the new user, use the passwd command:

sudo passwd newuser

You will be prompted to enter and confirm the new password.

Modifying Users

You can modify user accounts using the usermod command. For example, to change a user’s login name:

sudo usermod -l newlogin oldlogin

To change a user’s home directory:

sudo usermod -d /new/home/directory -m username

The -d option specifies the new home directory, and the -m option moves the contents from the old directory to the new one.

Deleting Users

To delete a user, use the userdel command:

sudo userdel username

To remove the user’s home directory as well:

sudo userdel -r username

3. Group Management

Groups allow you to manage multiple users with similar permissions collectively.

Creating Groups

To create a new group, use the groupadd command:

sudo groupadd newgroup

Modifying Groups

To change a group name, use the groupmod command:

sudo groupmod -n newgroupname oldgroupname

Adding Users to Groups

To add a user to a group, use the usermod command with the -aG option:

sudo usermod -aG groupname username

The -a option appends the user to the supplementary group(s), and the -G option specifies the group.

To verify group membership:

groups username

4. Understanding Linux File Permissions

Linux file permissions determine who can read, write, or execute a file. These permissions are divided into three categories: owner, group, and others.

Basic Permissions

  • Read (r): Permission to read the file or directory.

  • Write (w): Permission to write to or modify the file or directory.

  • Execute (x): Permission to execute the file or access the directory.

Changing Permissions

Permissions are represented by a set of three characters: r, w, and x, and are grouped in threes for the owner, group, and others.

To view file permissions, use the ls -l command:

ls -l

The output will look something like this:

-rwxr-xr--

Special Permissions

  • Setuid: Allows a user to run an executable with the file owner's permissions.

  • Setgid: Allows a user to run an executable with the file group's permissions.

  • Sticky Bit: Restricts file deletion within a directory to the file owner.

5. Managing File Permissions

chmod Command

The chmod command is used to change file permissions. You can use symbolic or numeric modes to set permissions.

Symbolic Mode

chmod u+rwx,g+rx,o+r filename

This command grants the owner read, write, and execute permissions, the group read and execute permissions, and others read permission.

Numeric Mode

Permissions can also be set using a three-digit octal number, where each digit represents the owner, group, and others.

chmod 755 filename

This command grants read, write, and execute permissions to the owner (7), and read and execute permissions to the group (5) and others (5).

chown and chgrp Commands

The chown command changes the ownership of a file or directory:

sudo chown newowner filename

The chgrp command changes the group ownership of a file or directory:

sudo chgrp newgroup filename

6. Advanced Permission Management

Access Control Lists (ACLs)

ACLs provide a more flexible permission mechanism by allowing you to set permissions for specific users or groups.

Setting ACLs

To set an ACL, use the setfacl command:

setfacl -m u:username:rwx filename

This command grants the user username read, write, and execute permissions on filename.

Viewing ACLs

To view the ACL of a file, use the getfacl command:

getfacl filename

Default ACLs

Default ACLs are applied automatically to new files and directories created within a directory.

Setting Default ACLs

setfacl -d -m u:username:rwx directory

This command sets a default ACL for the user username on directory.

7. Best Practices for User and Permission Management

  1. Use Groups Wisely: Group users with similar permissions to simplify management.

  2. Least Privilege Principle: Grant the minimum permissions necessary for users to perform their tasks.

  3. Regular Audits: Periodically review user accounts and permissions to ensure they are still appropriate.

  4. Use Strong Password Policies: Enforce strong passwords and regular password changes.

  5. Monitor User Activity: Use logging and monitoring tools to track user activity and detect suspicious behavior.

  6. Implement Two-Factor Authentication (2FA): Add an extra layer of security by requiring 2FA for user accounts.

  7. Backup Important Data: Regularly backup important data and configuration files to prevent data loss.

8. Conclusion

User and permission management are crucial aspects of Linux system administration. By understanding and implementing the concepts covered in this article, you can ensure your system is secure and operates efficiently. Regular monitoring, auditing, and adhering to best practices will help you maintain a robust and secure Linux environment.

Below is a summary of the commands and concepts covered in this article, with some additional code snippets for your reference.

Summary of Commands and Concepts

# Creating a new user
sudo useradd -m newuser
sudo passwd newuser

# Modifying a user
sudo usermod -l newlogin oldlogin
sudo usermod -d /new/home/directory -m username

# Deleting a user
sudo userdel username
sudo userdel -r username

# Creating a group
sudo groupadd newgroup

# Modifying a group
sudo groupmod -n newgroupname oldgroupname

# Adding a user to a group
sudo usermod -aG groupname username
groups username

# Viewing file permissions
ls -l

# Changing file permissions using symbolic mode
chmod u+rwx,g+rx,o+r filename

# Changing file permissions using numeric mode
chmod 755 filename

# Changing file ownership
sudo chown newowner filename

# Changing group ownership
sudo chgrp newgroup filename

# Setting ACL
setfacl -m u:username:rwx filename

# Viewing ACL
getfacl filename

# Setting default ACL
setfacl -d -m u:username:rwx directory

Additional Tips and Tools

  • User Management Tools: Tools like usermod, groupmod, and usermgmt can simplify user management tasks.

  • Permission Tools: Utilities like setfacl and getfacl are invaluable for managing ACLs.

  • Security Tools: Consider using tools like fail2ban to protect against unauthorized access attempts.

By mastering these tools and concepts, you'll be well-equipped to manage users and permissions in your Linux environment effectively. Whether you're a beginner or an experienced administrator, these skills are fundamental to maintaining a secure and efficient system. Happy administrating!

0
Subscribe to my newsletter

Read articles from Aaditya Kediyal directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Aaditya Kediyal
Aaditya Kediyal

I am Developer from Delhi, India and my domain of expertise lies in Full-Stack Development . I am currently learning Devops and sharing my journey one day at a time. In future I'll be definitely moving to WEB 3.0 , Blockchain technology and Web RTC. Hopefully i will be contributing in future as well.