Linux System Administrator
Published: 2024-01-22 04:05:22

---
title: Linux System Administrator
published: true
date: 2022-05-25 16:40:30 UTC
tags: 
canonical_url: 
---

Welcome to the part 2 of Journey to become Linux Wizard [Part 1](https://sheoranharis.hashnode.dev/the-first-step-toward-becoming-a-linux-wizard)

# User Management

## User & Groups

- User ID [UID] use to identify user 
- Group ID [GID] use to identify groups
- Other users like System Daemon, Root user/Superuser, etc.

#### Root User

- User who has complete access to the system.
- Its UID is 0.
- use `sudo` command to execute the command as the root user.
- `sudo su` command to become a root user.
- command you use as a root user, their history will not be saved so use them carefully.

### Who are these other users in system other than me and root?

`sudo cat /etc/passwd` to see a list of all users,you'll find a lot of users but lets focus on first one to understand all this gibberish, ![02.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1653467848692/kQMWO28MQ.png)

![03.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1653468218006/AekDKt-Vo.jpg)

1. 'root' is the username.
2. 'x' is the password for the user, which is encrypted .and stored in `/etc/shadow`
3. '0' is the User ID.
4. '0' is Group ID.
5. User info which is the root user in our case.
6. user's home directory. 
7. `/bin/bash` is the User's Shell.

#### `/etc/shadow`

type the following command to see the password details of users

![04.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1653469051373/-B3QWRGI6.png)

![05.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1653469386888/ZhrFIFGkn.jpg)

1. 'root' is the username.
2. '!' is an encrypted password.
3. '19056' is the date of the last password change since 1st Jan. 1970.
4. '0' is the Minimum password age.
5. '99999' is the Maximum password age.
6. '7' is the warning period to change the password.
7. ':' is the password expiry period.
8. ':' is the Account expiration Date.
9. ':' is Reserved Field.

#### `/etc/group`

type the command ![06.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1653469799475/OxE28--O9.png)

![07.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1653470096088/Fl_j8OslG.jpg)

1. 'root' is the group name.
2. 'x' is the group password.
3. '0' is the group ID.
4. Last empty field is the list of users in this group.

#### How to create & delete a user?

`sudo useradd nameofuser`

`sudo userdel nameofuser`

#### How to change password and hostname?

`sudo passwd userName`

`sudo hostname newUser`

# Permissions

#### Types

- Read (r)
- Write (w)
- Execute (e)type the following command `ls -l` 

![08.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1653471137115/OB40r21Gs.png)

start with the gibberish on the left side`drwxrwxr-x`

Understand this by dividing it into four separate parts.

![09.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1653471668405/9Cijku-YK.jpg)

1. Tells about type
  - d is a directory
  - '-' is a file
  - l is a link
2. `rwx` are user permissions.
3. `rwx` are group permissions.
4. `r-x` are others' permission.

#### so, what is this 'rwx' and 'r-x' means ?

- `r` is readability permission
- `w` is writability permission
- `x` is executability permission
- `-` empty 

so in the above photo, the user and group have all permissions to read, write and execute the directory but other users only have permission to read and execute

### Modifying Permissions

let say i have a file named myfile.txt with permission `-rw-rw-r--`

change permission using `chmod` command

`$ chmod o+w myfile.txt`

`o` is for other users

`w` is to give it writing permission

`+` is to add permission

`-` is to remove permission

#### Modifying Multiple Permissions

`$ chmod ugo-rwx myfile.txt`

- `ugo` is for user, group & others 
- `-` is to remove permission
- `rwx` is read, write and execution permission
- we removed all three permissions for three kind of users

#### Numerical representation of permissions

- read (r) `4`
- write(w) `2`
- execute(x) `1`

to grant all permission by using numerical representation

`$ chmod +777 myfile.txt`

![10.jpg](https://cdn.hashnode.com/res/hashnode/image/upload/v1653493212358/kh46poEa_.jpg)

- `+` to add permission
- `7` to add all permission to user
- `7` to add all permission to group
- `7` to add all permission to other users

Numerical presentation

- `0` No permission
- `1` execution permission
- `2` write permission
- `3` write and execution permission
- `4` read permission
- `5` read and execution permission
- `6` read and write permission
- `7` read, write and execution permission

#### Change user ownership of file

`$ sudo chown pintu myfile.txt`

so ownership will transfer to the username pintu

#### Change group of file

`$ sudo chgrp`

# Set User ID (SUID)

lets type a command in your terminal

`$ ls -l /usr/bin/passwd`

![11.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1653494165909/kIwOOGHt9.png)

##### How am i able to access this data without being root user?

you can see its permission, lets break down it to understand it better

`rwsr-xr-x`

we have an `s` in user permission,`s` is **SUID** which give us ownership and execution permission.

`S` will only give only ownership

### Add SUID to user

`$ sudo chmod u+s myfile.txt`

- add permission to user

`$ sudo chmod 4755 myfile.txt`

- `4` is for SUID

### Add Group ID (GUID)

`$ sudo chmod 2755 myfile.txt`

- `2` for GUID

# Sticky Bit Permission

- It grants all permission but only delete access is only for user

type the command `ls -ld/tmp`

you will see

`drwxrwxrwt`

- `t` is Sticky Bit

#### Modify Sticky Bit

`$ sudo chmod +t directory`

`$ sudo chmod 1755 directory`

- `1` for sticky bit permission

_See you in the next blog of **Linux Process** _