Linux Users and Groups: Difference between revisions
imported>AwesomO Created page with "== Understanding Users and Groups in Linux == In Linux, users and groups are essential concepts for managing system access and permissions. This guide will provide an in-depth explanation of users and groups in Linux, helping complete noobs to understand their roles and how they are used in the operating system. === Users === In Linux, a user is an entity that can log into the system and interact with it. Users can be either human beings or system processes that requi..." |
(No difference)
|
Latest revision as of 03:59, 17 April 2023
Understanding Users and Groups in Linux
In Linux, users and groups are essential concepts for managing system access and permissions. This guide will provide an in-depth explanation of users and groups in Linux, helping complete noobs to understand their roles and how they are used in the operating system.
Users
In Linux, a user is an entity that can log into the system and interact with it. Users can be either human beings or system processes that require access to system resources. Each user has a unique identifier called a User ID (UID), which is a number assigned by the system.
There are three types of users in Linux:
- Regular users: Regular users are the most common type of user accounts. They have limited access to the system and are typically created for individuals who use the system for everyday tasks.
- System users: System users are created for managing system processes and services. These users have limited access to the system and are not intended for human interaction. They are used to isolate and secure different system services.
- Superuser (root): The superuser, also known as the root user, has complete access to the entire system. The root user can perform any operation on the system, including modifying system files, installing software, and creating or deleting users. It is crucial to use the root user account sparingly and only when necessary, as it can potentially cause significant harm to the system if misused.
Groups
A group in Linux is a collection of users who share certain permissions and access rights. Groups are useful for managing multiple users who need similar access to resources or files. Each group has a unique identifier called a Group ID (GID), which is a number assigned by the system.
Users can belong to one or more groups, and each group can have multiple members. By default, when a new user is created, a group with the same name as the user is also created. This group is referred to as the user's primary group.
Managing User and Group
Users
More info and options for users can be found at the Users page
Managing users and groups in Linux typically involves the following tasks:
- Creating users: To create a new user, you can use the useradd command followed by the username. This command creates a new user account and sets up the user's home directory, default shell, and primary group.
useradd newuser
- Modifying users': To modify an existing user's properties, you can use the usermod command. For example, you can add a user to a new group or change their primary group.
usermod -aG newgroup newuser
- Deleting users: To delete a user account, use the userdel command followed by the username. This command will remove the user from the system and, with the -r option, delete the user's home directory and mail spool.
userdel -r newuser
- Changing user passwords: To set or change a user's password, use the passwd command followed by the username.
passwd newuser
Group
- Creating groups: To create a new group, use the groupadd command followed by the group name.
groupadd newgroup
- Modifying groups: To modify an existing group's properties, use the groupmod command. For example, you can change the group name or GID.
groupmod -n newgroupname oldgroupname
- Deleting groups: To delete a group, use the groupdel command followed by the group name.
groupdel newgroup
- Listing users and groups: To list all the users on the system, you can use the getent command with the passwd database:
getent passwd
Similarly, to list all the groups on the system, use the getent command with the group database:
getent group
Another way to list users and groups is by checking the /etc/passwd and /etc/group files, respectively. These files store user and group information in a human-readable format.
File Ownership and Permissions
Understanding users and groups is essential for managing file ownership and permissions. In Linux, each file and directory has an owner and a group associated with it. The owner is usually the user who created the file, and the group is the primary group of the owner.
File permissions in Linux are defined for three categories of users:
- User (u): The owner of the file
- Group (g): The group associated with the file
- Other (o): All other users on the system
For each category, there are three types of permissions:
- Read (r): The ability to read the contents of a file or list the contents of a directory
- Write (w): The ability to modify a file or create, modify, and delete files within a directory
- Execute (x): The ability to run a file as a program or access a directory
You can view file ownership and permissions using the ls -l command. The output will display the permissions, owner, group, and other file information.
To change file ownership, use the chown command:
chown newuser:newgroup filename
To modify file permissions, use the chmod command. Permissions can be specified using numeric or symbolic notation:
chmod u+x filename # Adds execute permission for the user (owner) chmod 755 filename # Sets read, write, execute for the user, and read and execute for the group and others
By understanding and effectively managing users, groups, and permissions in Linux, you can ensure a secure and well-organized system.
Sudo and su commands
The sudo and su commands in Linux are used to perform tasks with elevated privileges, typically as the root user. These commands are essential for system administration tasks that require higher permissions.
sudo
- Sudo: The sudo command allows a permitted user to execute a command as the superuser or another user, as specified in the /etc/sudoers file.
Some examples:
- Run a command as the root user:
sudo command
- Update the package list and upgrade packages (requires root privileges):
sudo apt update && sudo apt upgrade
- Edit a system configuration file using the nano text editor:
sudo nano /etc/hosts
Options:
- -u: Run the command as a specific user. Replace username with the desired user:
sudo -u username command
- -k: Invalidate the user's cached credentials:
sudo -k
- -l: List the commands the current user is allowed to run:
sudo -l
su
- Su: The su command allows you to switch to another user's account or become the superuser (root). When used without any options or arguments, it defaults to switching to the root user.
Examples:
- Switch to the root user:
su
- Switch to another user account. Replace username with the desired user:
su username
Options:
- -c: Run a single command as another user, then return to the original user. Replace username with the desired user, and command with the command to be executed:
su -c 'command' username
- -l or --login: Start a login shell, which simulates a full login as the specified user:
su -l username
Both sudo and su have their own benefits and use cases. Generally, sudo is preferred for its granular control over user permissions and auditability. The su command is useful for switching between user accounts or running a series of commands as another user. Always exercise caution when using these commands, as elevated privileges can lead to unintended system changes.