diff --git a/docs/06-Security and File Permissions/01-The Security Incident(story).md b/docs/06-Security and File Permissions/01-The Security Incident(story).md new file mode 100644 index 0000000..6c59331 --- /dev/null +++ b/docs/06-Security and File Permissions/01-The Security Incident(story).md @@ -0,0 +1,3 @@ +# Security Incident (story) + + Take me to the[Story](https://kodekloud.com/courses/873064/lectures/17074490) \ No newline at end of file diff --git a/docs/06-Security and File Permissions/02-Linux Accounts.md b/docs/06-Security and File Permissions/02-Linux Accounts.md new file mode 100644 index 0000000..6b2428f --- /dev/null +++ b/docs/06-Security and File Permissions/02-Linux Accounts.md @@ -0,0 +1,100 @@ +# LINUX ACCOUNTS + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074499) + - In this section we will take a look at basic access control in Linux. + - We will also learn about about the file permissions. Lets Get Started! + + ![linux](../images/linux.PNG) + + + #### User Accounts + + - User's informations are stored under **`/etc/passwd`** file. + + ``` + [~]$ cat /etc/passwd + ``` + + - Information about groups is stored into **`/etc/group`** file. + + ``` + [~]$ cat /etc/group + ``` + + ![user](../images/user.PNG) + + - Each user has a username and a unique ID assigned to them known as user ID or UID. + - The user also has a GID, the group id they are part of, **`id`** command can be use to check these details. for eg: + + ``` + [~]$ id michael + uid=1001(michael) gid=1001(michael)groups=1001(michael),1003(developers) + ``` + + - More details about the user account can be found eg. default shell, home directory using. + + ``` + [~]$ grep -i michael /etc/passwd + michael:x:1001:1001::/home/michael:/bin/sh + ``` + + ![group](../images/group.PNG) + + - To see the list of users currently logged use **`who`** command. + + ``` + [~]$ who + bob pts/2 Apr 28 06:48 (172.16.238.187) + ``` + + - The **`last`** command displays the record of all logged-in users along with the date and time when the system was rebooted. + + ``` + [~]$ last + michael :1 :1 Tue May 12 20:00 still logged in + sarah :1 :1 Tue May 12 12:00 still running + reboot system boot 5.3.0-758-gen Mon May 11 13:00 - 19:00 (06:00) + ``` + + #### Switching users + + - To switch to any user use **`su`** command. + + ``` + [~]$ su – + Password: + + root ~# + ``` + + - To run a specific command you can use **`su -c "whoami"`** (This is not recommended way) + + ``` + [michael@ubuntu-server ~]$ su -c "whoami" + Password: + root + ``` + + - To run a command as a root user **`sudo`** command is recommended. + + ``` + [michael@ubuntu-server ~]$ sudo apt-get install nginx + [sudo] password for michael: + ``` + + ![who](../images/who.PNG) + + - Users listed in /etc/sudoers file can make use of sudo command for privledge escalation. + + ``` + [~]$ cat /etc/sudoers + ``` + ![sudo](../images/sudo.PNG) + + - To restrict anyone from directly login as root login, this can be done by setting **`nologin`** shell. + + ``` + [~]$ grep -i ^root /etc/passwd + /root:x:0:0:root:/root:/usr/sbin/nologin + ``` + \ No newline at end of file diff --git a/docs/06-Security and File Permissions/03-User Management.md b/docs/06-Security and File Permissions/03-User Management.md new file mode 100644 index 0000000..2c59008 --- /dev/null +++ b/docs/06-Security and File Permissions/03-User Management.md @@ -0,0 +1,74 @@ +# USER MANAGEMENT + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074501) + - In this lecture we will learn how to create and manage user accounts in Linux. + + #### User Add + + - To create a new local user **`bob`** in the system use **`useradd`** command. + + ``` + [~]$ useradd bob + ``` + + - To get more details about **`bob`** account like, home director, uid, and shell use **`/etc/passwd`** + + ``` + [~]$ grep -i bob /etc/passwd + bob:x:1002:1002::/home/bob:/bin/sh + ``` + + ![useradd](../images/useradd.PNG) + + - To check the uid or username of the user logged in user **`whoami`** command. + + ``` + [~]$ whoami + bob + ``` + + - All user's password are store under **`/etc/shadow`** + + ``` + [~]$ grep -i bob /etc/shadow + bob:!:18341:0:99999:7::: + ``` + + - To change the password of current user use **`passwd`** or for any specific user use **`passwd `** + + ``` + [~]$ passwd bob + Changing password for user bob. + New UNIX password: + Retype new UNIX password: + passwd: all authentication tokens updated + successfully. + ``` + + # Managing Users + + - **`useradd`** command be used along with many attributes as show below. + + ``` + [~]$ useradd -u 1009 -g 1009 -d /home/robert -s /bin/bash -c ”Mercury Project member" bob + ``` + + ![manage](../images/manage.PNG) + + - To delete a user use **`userdel`** command + + ``` + [~]$ userdel bob + ``` + + - To add a group use **`groupadd`** command + + ``` + [~]$ groupadd –g 1011 developer + ``` + + - To delete a group user **`groupdel`** command + + ``` + [~]$ groupdel developer + ``` \ No newline at end of file diff --git a/docs/06-Security and File Permissions/04-Access Control Files.md b/docs/06-Security and File Permissions/04-Access Control Files.md new file mode 100644 index 0000000..dc6b3e0 --- /dev/null +++ b/docs/06-Security and File Permissions/04-Access Control Files.md @@ -0,0 +1,44 @@ +# ACCESS CONTROL FILES + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074502) + + - Access Ccontrol files are stored under **`/etc`**. + - Can be read by anyone and can be only edited by **`root`** user. + + + ### Control files + + - To get more details about one's account for example **`bob`** account, home director, uid, and shell check **`/etc/passwd`** + + ``` + [~]$ grep -i ^bob /etc/passwd + bob:x:1002:1002::/home/bob:/bin/sh + USERNAME:PASSWORD:UID:GID:GECOS:HOMEDIR:SHELL + ``` + + ![passwd](../images/passwd.PNG) + + - Password are stored under **`/etc/shadow`** + + ``` + [~]$ grep -i ^bob /etc/shadow + bob:$6$0h0utOtO$5JcuRxR7y72LLQk4Kdog7u09LsNFS0yZPkIC8pV9tgD0wXCHutY + cWF/7.eJ3TfGfG0lj4JF63PyuPwKC18tJS.:18188:0:99999:7::: + + USERNAME:PASSWORD:LASTCHANGE:MINAGE:MAXAGE:WARN:INACTIVE:EXPDATE + ``` + + ![shadow](../images/shadow.PNG) + + - Check the groups **`bob`** belongs too + + ``` + [~]$ grep -i ^bob /etc/group + NAME:PASSWORD:GID:MEMBERS + ``` + + ![egp](../images/egp.PNG) + +# HANDS-ON LABS + + - Lets start with Managing and User Accounts [here](https://kodekloud.com/courses/the-linux-basics-course/lectures/17074503) \ No newline at end of file diff --git a/docs/06-Security and File Permissions/05-File Permissions.md b/docs/06-Security and File Permissions/05-File Permissions.md new file mode 100644 index 0000000..95a4b11 --- /dev/null +++ b/docs/06-Security and File Permissions/05-File Permissions.md @@ -0,0 +1,114 @@ +# LINUX FILE PERMISSIONS + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074504) + + - In this lecture we will learn about various file type identifiers. + - We will also learn about various Linux file permissions that can be applied on the file or the directory. + + ![perm](../images/perm.PNG) + + + ![type](../images/type.PNG) + + + #### Directory Permission + + - To list the directory permission use + + ``` + [~]$ ls -ld /home/bob/random_dir + ``` + + - To know the current user + + ``` + [~]$ whoami + ``` + + - To change the change the directory + + ``` + [~]$ cd /home/bob/random_dir + ``` + + #### File Permissions + + - Linux file permissions are defined as + + ![filep](../images/filep.PNG) + + #### Modifying file permissions + + - Use **`chmod`** command to modify the file permissions. + + - Provide full access to owners + + ``` + [~]$ chmod u+rwx test-file + ``` + + - Provide Read access to Owners, groups and others, Remove execute access + + ``` + [~]$ chmod ugo+r-x test-file + ``` + + - Remove all access for others + + ``` + [~]$ chmod o-rwx test-file + ``` + + - Full access for Owner, add read , remove execute for group and no access for others + + ``` + [~]$ chmod u+rwx,g+r-x,o-rwx test-file + ``` + + - Provide full access to Owners, group and others + + ``` + [~]$ chmod 777 test-file + ``` + + - Provide Read and execute access to Owners,groups and others + + ``` + [~]$ chmod 777 test-file + ``` + + - Read and Write access for Owner and Group, No access for others. + + ``` + [~]$ chmod 660 test-file + ``` + + - Full access for Owner, read and execute for group and no access for others. + + ``` + [~]$ chmod 750 test-file + ``` + + #### Change Ownership + + - Changes owner to bob and group to developer + + ``` + [~]$ chown bob:developer test-file + ``` + + - Changes just the owner of the file to bob. Group unchanged. + + ``` + [~]$ chown bob andoid.apk + ``` + + - Change the group for the test-file to the group called android. + + ``` + [~]$ chgrp android test-file + ``` + +# HANDS-ON LABS + + - Lets do some hands on labs to understand File Permission better. [Take me to Labs](https://kodekloud.com/courses/873064/lectures/17074516) \ No newline at end of file diff --git a/docs/06-Security and File Permissions/06-SSH and SCP.md b/docs/06-Security and File Permissions/06-SSH and SCP.md new file mode 100644 index 0000000..1a20614 --- /dev/null +++ b/docs/06-Security and File Permissions/06-SSH and SCP.md @@ -0,0 +1,89 @@ +# SSH and SCP + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074517) + - In this lecture we will learn about SSH and SCP commands. + - SSH is used to login to the remote computer. + - SCP is used to copy of files/directories within the file system also can copy data to remote computer. + + #### SSH + + - To login to the remote server use **`ssh`** command with hostname or IP address. + + ``` + ssh + ``` + + - To login to the remote server with specific username and password. + + ``` + ssh @ + ``` + + **`-l`** attribute can also be used as + + ``` + ssh –l + ``` + + #### Password-Less Authentication + + - Passwordless authentication can be setup via key-pair authentication in order to login to the remote server with password. + + - Public and Private key are stored at below location. + + ``` + Public Key: /home/bob/.ssh/id_rsa.pub + ``` + + ``` + Private Key: /home/bob/.ssh/id_rsa + ``` + + - To generate a keypair on the **`Client`** run this command + + ``` + bob@caleston-lp10 ~]$ ssh-keygen –t rsa + ``` + + ![key](../images/key.PNG) + + - To copy the Public key from the client to the remote server + + ``` + bob@caleston-lp10 ~]$ ssh-copy-id bob@devapp01 + ``` + + ![copy](../images/copy.PNG) + + + - Now **`Bob`** can login to remote server without password + + ``` + [bob@caleston-lp10 ~]$ ssh devapp01 + ``` + + ![pless](../images/pless.PNG) + + - Public Key is copied to the remote server at : + + ``` + [bob@caleston-lp10 ~]$ cat /home/bob/.ssh/authorized_keys + ``` + + ![auth](../images/auth.PNG) + + #### SCP + + - To copy a compresses file to a remote server + + ``` + bob@caleston-lp10 ~]$ scp /home/bob/caleston-code.tar.gz devapp01:/home/bob + ``` + + - To copy a directory to a remote server + + ``` + [bob@caleston-lp10 ~]$ scp –pr /home/bob/media/ devapp01:/home/bob + ``` + + ![scp](../images/scp.PNG) \ No newline at end of file diff --git a/docs/07-Networking/01-The Network Issue(story).md b/docs/07-Networking/01-The Network Issue(story).md new file mode 100644 index 0000000..99bda13 --- /dev/null +++ b/docs/07-Networking/01-The Network Issue(story).md @@ -0,0 +1,3 @@ +# The Networking Story + + - Click [here](https://kodekloud.com/courses/873064/lectures/17074519) to know The Networking Story. \ No newline at end of file diff --git a/docs/07-Networking/02-DNS.md b/docs/07-Networking/02-DNS.md new file mode 100644 index 0000000..ea0dc45 --- /dev/null +++ b/docs/07-Networking/02-DNS.md @@ -0,0 +1,129 @@ +# DNS + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074529) + + - The domain name system is a distributed way to share these name-to-IP associations instead of requiring each computer to synchronize a hosts file. A name server publishes the IP address for a domain and provides a single location to update when an IP changes. + + + #### Ping + + - **`Ping`** Command is use to check the remote machine is reachable or not. + + ``` + [~]$ ping 192.168.1.11 + Reply from 192.168.1.11: bytes=32 time=4ms TTL=117 + Reply from 192.168.1.11: bytes=32 time=4ms TTL=117 + ``` + + - To **`Ping`** the remote host with a name instead of **`IP Address`** make an entry in **`/etc/hosts`** file + + ``` + [~]$ cat >> /etc/hosts + 192.168.1.11 db + ``` + + ``` + [~]$ ping db + PING db (192.168.1.11) 56(84) bytes of data. + 64 bytes from db (192.168.1.11): icmp_seq=1 ttl=64 time=0.052 ms + 64 bytes from db (192.168.1.11): icmp_seq=2 ttl=64 time=0.079 ms + ``` + - You can configure as many hosts you want in the **`/etc/hosts`** file. + + ``` + [~]$ cat >> /etc/hosts + 192.168.1.10 web + 192.168.1.11 db + 192.168.1.12 nfs + 192.168.1.20 web + 192.168.1.21 db-1 + 192.168.1.22 nfs-1 + 192.168.1.30 web-1 + 192.168.1.31 db-2 + 192.168.1.32 nfs-2 + 192.168.1.40 web-2 + 192.168.1.41 sql + 192.168.1.42 web-5 + 192.168.1.50 web-test + 192.168.1.61 db-prod + 192.168.1.52 nfs-4 + 192.168.1.60 web-3 + 192.168.1.61 db-test + 192.168.1.62 nfs-prod + ``` + + - Every host has a DNS resolution file **`/etc/rsolve.conf`** + + ``` + [~]$ cat /etc/resolv.conf + nameserver 192.168.1.100 + ``` + + - The **`/etc/nsswitch.conf`** file is used to configure which services are to be used to determine information such as hostnames, password files, and group files.There is a specific search order according to which it is performed. This order is set in this configuration file. + + ``` + [~]$ cat /etc/nsswitch.conf + … + hosts: files dns + … + ``` + +# DOMAIN NAMES + + ![DNS](../images/dns.PNG) + + - .com - Commerical or General Purpose. + - .net - Network or General Purpose. + - .edu - Education Purpose + - .org - Organizations for non profit organizations etc. + + ![Root](../images/root.PNG) + +# RECORD TYPES + + ![Record](../images/record.PNG) + + - A - IP to host names. + - AAAA - Storing ipv6 to hostnames. + - CNAME - Mapping one name to another. + + - To test the DNS resolution you can use **`nslookup`** command, this will query a hostname from a DNS Server. + + ``` + [~]$ nslookup www.google.com + Server: 8.8.8.8 + Address: 8.8.8.8#53 + Non-authoritative answer: + Name: www.google.com + Address: 172.217.0.132 + ``` + + - Another useful tool to query a hostname from a DNS server is **`dig`** which return more detailed information as shown. + + ``` + [~]$ dig www.google.com + ; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.google.com + ;; global options: +cmd + ;; Got answer: + ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28065 + ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1 + ;; OPT PSEUDOSECTION: + ; EDNS: version: 0, flags:; udp: 512 + ;; QUESTION SECTION: + ;www.google.com. IN A + ;; ANSWER SECTION: + www.google.com. 245 IN A 64.233.177.103 + www.google.com. 245 IN A 64.233.177.105 + www.google.com. 245 IN A 64.233.177.147 + www.google.com. 245 IN A 64.233.177.106 + www.google.com. 245 IN A 64.233.177.104 + www.google.com. 245 IN A 64.233.177.99 + ;; Query time: 5 msec + ;; SERVER: 8.8.8.8#53(8.8.8.8) + ;; WHEN: Sun Mar 24 04:34:33 UTC 2019 + ;; MSG SIZE rcvd: 139 + ``` + +# HANDS-ON LABS + + - Lets have some fun and challenging [excerises](https://kodekloud.com/courses/873064/lectures/17074530) \ No newline at end of file diff --git a/docs/07-Networking/03-Networking Basics.md b/docs/07-Networking/03-Networking Basics.md new file mode 100644 index 0000000..f9e0296 --- /dev/null +++ b/docs/07-Networking/03-Networking Basics.md @@ -0,0 +1,69 @@ +# Switching & Routing + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074531) + + #### Switching + + - Switching helps to connect the interface within same network. + + ![switch](../images/switch.PNG) + + - To see the interfaces on the hosts use **`ip link`** command + + ``` + [~]$ ip link + eth0: mtu 1500 qdisc fq_codel state UP mode + DEFAULT group default qlen 1000 + ``` + + - To connect to the switch we use **`ip addr add`** command + + ``` + [~]$ ip addr add 192.168.1.10/24 dev eth0 + ``` + + #### Routing + + - Router helps to connect to two seprate networks together. + + ![route](../images/routing.PNG) + + - To see the existing routing table configuration run the **`route`** command. + + ``` + [~]$ route + Kernel IP routing table + Destination Gateway Genmask Flags Metric Ref Use Iface + ``` + + - To configure a gateway on system B to reach the system on other network run + + ``` + [~]$ ip route add 192.168.2.0/24 via 192.168.1.1 + ``` + + ``` + [~]$ route + + Kernel IP routing table + Destination Gateway Genmask Flags Metric Ref Use Iface + 192.168.2.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0 + ``` + + - To see the ip addresses assign to interfaces use + + ``` + [~]$ ip addr + ``` + + - + + ``` + [~]$ ip route + ``` + + - To make this changes permanent you must set them in **`/etc/network/interfaces`** file. + +# HANDS-ON LAB + + - Lets get our hands on [LABS](https://kodekloud.com/courses/873064/lectures/17074533) \ No newline at end of file diff --git a/docs/07-Networking/04-Troubleshooting.md b/docs/07-Networking/04-Troubleshooting.md new file mode 100644 index 0000000..5b78347 --- /dev/null +++ b/docs/07-Networking/04-Troubleshooting.md @@ -0,0 +1,73 @@ +# TROUBLESHOOTING + + - - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074532) + + - In this lecture we will be going to troubleshooting the issue that **`Bob`** is facing. + - Bob is not able to reach to the repository server and he get the error as show below. + + ![site](../images/site.PNG) + + #### Check Interfaces + + - Use the **`ip link`** to ensure the primary interface is up. + - In this case, the network interface named **`enp1s0f1`** state is up. + + ``` + [~]$ ip link + 1: lo: mtu 65536 qdisc + noqueue state UNKNOWN mode DEFAULT group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + 2: enp1s0f1: mtu 1500 qdisc + fq_codel state UP mode DEFAULT group default qlen 1000 + link/ether 08:97:98:6e:55:4d brd ff:ff:ff:ff:ff:ff + ``` + + - Check if we can resolve the hostname to IP address via **`nslookup`** + + ``` + [~]$ nslookup caleston-repo-01 + Server: 192.168.1.100 + Address: 192.168.1.100 #53 + + Non-authoritative answer: + Name: caleston-repo-01 + Address: 192.168.2.5 + ``` + + - **`ping`** to check the connectivity. + + ``` + [~]$ ping caleston-repo-01 + PING caleston-repo-01 (192.168.2.5) 56(84) bytes of data. + + --- localhost ping statistics --- + 3 packets transmitted, 0 received, 100% packet loss, time 2034ms + ``` + + - **`traceroute`** to check the number of hops between the source. + + ``` + [~]$ traceroute 192.168.2.5 + + Tracing route to example.com [192.168.2.5] + over a maximum of 30 hops: + 1 <1 ms <1 ms <1 ms 192.168.1.1 + 2 <2 ms <1 ms <1 ms 192.168.2.1 + 3 * * * Request timed out. + ``` + + - To check the port status use **`netstat`** command and to use it along with port number use below command. + + ``` + [caleston-repo-01: ~]$ netstat -an | grep 80 | grep -i LISTEN + ``` + + ![net](../images/net.PNG) + + - To bring up the interface up use below command. + + ``` + [caleston-repo-01: ~]$ ip link set dev enp1s0f1 up + ``` + + ![iplink](../images/iplink.PNG) \ No newline at end of file diff --git a/docs/08-Storage in Linux/01-Where's my Storage.md b/docs/08-Storage in Linux/01-Where's my Storage.md new file mode 100644 index 0000000..e4b061b --- /dev/null +++ b/docs/08-Storage in Linux/01-Where's my Storage.md @@ -0,0 +1,3 @@ +# Where's my Storage + + Lets hear the [Story](https://kodekloud.com/courses/873064/lectures/17080739) diff --git a/docs/08-Storage in Linux/02-Storage Basics.md b/docs/08-Storage in Linux/02-Storage Basics.md new file mode 100644 index 0000000..4320dd6 --- /dev/null +++ b/docs/08-Storage in Linux/02-Storage Basics.md @@ -0,0 +1,106 @@ +# DISK'S & PARTITIONS + +- Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074601) + +- In this lecture we will learn about Disk Partitions. +- We will look at the File Systems such as EXT series and NFS. +- External Storage Devices such as DAS,NAS, and SAN. +- LVM in Action. + + ![Disk](../images/disk.PNG) + + #### List all Block devices + + - Block devices are special files that refer to or represent a device (which could be anything from a hard drive to a USB drive). So naturally, there are command line tools that help you with your block devices-related work. + - Major Number is used to identigy the type of block device, value 8 represent a SCSI device starts with SD. + - Minor Number is uset to distuinguish individual, physical or logical devices. + + ``` + [~]$ lsblk + ``` + + ``` + [~]$ ls -l /dev/ | grep "^b" + ``` + + - To Print,Create and Delete the parition table use **`fdisk -l`** command + + ``` + [~]$ sudo fdisk -l /dev/sda + ``` + + #### Partition Types - + + ![Part](../images/partition.PNG) + + - PRIMARY - Use to Boot an Operating System. + - EXTENDED - Can host logical partitions but cannot be used on its own. + - LOGICAL - Created within an extended partition. + + #### Creating Partitions - + + - **`Gdisk`** is an improved version of the **`fdisk`** that works with the GTP partition table. + - To create a partition on **`sdb`** use + + ``` + [~]$ gdisk /dev/sdb + GPT fdisk (gdisk) version 1.0.1 + + Partition table scan: + MBR: protective + BSD: not present + APM: not present + GPT: present + Found valid GPT with protective MBR; using GPT. + + Command (? for help): ? + b back up GPT data to a file + c change a partition's name + d delete a partition + i show detailed information on a partition + l list known partition types + n add a new partition + o create a new empty GUID partition table (GPT) + p print the partition table + q quit without saving changes + r recovery and transformation options (experts only) + s sort partitions + t change a partition's type code + v verify disk + w write table to disk and exit + x extra functionality (experts only) + ? print this menu + + Command (? for help): n + Partition number (1-128, default 1): 1 + First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 2048 + Information: Moved requested sector from 34 to 2048 in + order to align on 2048-sector boundaries. + Use 'l' on the experts' menu to adjust alignment + Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: 41943006 + Current type is 'Linux filesystem' + Hex code or GUID (L to show codes, Enter = 8300): + Changed type of partition to 'Linux filesystem' + Command (? for help): w + Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING + PARTITIONS!! + Do you want to proceed? (Y/N): Y + OK; writing new GUID partition table (GPT) to /dev/vdb. + The operation has completed successfully. + ``` + + ``` + [~]$ sudo fdisk -l /dev/sdb + Disk /dev/sdb: 20 GiB, 128035676160 bytes, 250069680 sectors + Units: sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + Disklabel type: gpt + Disk identifier: 7CABF26E-9723-4406-ZEA1-C2B9B6270A23 + Device Start End Sectors Size Type + /dev/sdb1 2048 41943006 204800 20GB Linux filesystem + ``` + + # HANDS-ON LABS + + - [Troubleshoot](https://kodekloud.com/courses/873064/lectures/17074602) why **`Bob's`** System is not displaying the entire size of the physical disk \ No newline at end of file diff --git a/docs/08-Storage in Linux/03-File System in Linux.md b/docs/08-Storage in Linux/03-File System in Linux.md new file mode 100644 index 0000000..1e46e86 --- /dev/null +++ b/docs/08-Storage in Linux/03-File System in Linux.md @@ -0,0 +1,53 @@ +# File System in Linux + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074603) + + - In this lecture we will cover the most commonly used file systems from EXT2 to EXT4. + + ![fs](../images/fs.PNG) + + #### Working with Ext4 + + - To create a file system we will make use of **`/dev/sdb`** disk, run below command + + ``` + [~]$ mkfs.ext4 /dev/sdb1 + ``` + + - Now create a directory to mount the filesystem use below commands + + ``` + [~]$ mkdir /mnt/ext4; + + [~]$ mount /dev/sdb1 /mnt/ext4 + ``` + - To verify if the filesystem is mounted use + + ``` + [~]$ mount | grep /dev/sdb1 + + [~]$ df -hP | grep /dev/sdb1 + ``` + - Add an entry into **`/etc/fstab`** for the filesystem to be available after reboot. + + ``` + # /etc/fstab: static file system information. + # + # Use 'blkid' to print the universally unique identifier for a + # device; this may be used with UUID= as a more robust way to name devices + # that works even if disks are added and removed. See fstab(5). + # + # + /dev/sda1 / ext4 defaults,relatime,errors=panic 0 1 ~ + ``` + + ``` + echo "/dev/sdb1 /mnt/ext4 ext4 rw 0 0" >> /etc/fstab + ``` + - **`fstab`** file attributes + + ![fstab](../images/fstab.PNG) + +# HANDS-ON LABS + + - Lets Play around with [FileSystems](https://kodekloud.com/courses/873064/lectures/17074604) \ No newline at end of file diff --git a/docs/08-Storage in Linux/04-DAS NAS and SAN.md b/docs/08-Storage in Linux/04-DAS NAS and SAN.md new file mode 100644 index 0000000..6aa31b9 --- /dev/null +++ b/docs/08-Storage in Linux/04-DAS NAS and SAN.md @@ -0,0 +1,37 @@ +# DAS NAS AND SAN + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074605) + + - Now that you are familiar with basic of storage in Linux lets learn about external storage. + + - DAS - Direct Attached Storage, external storage is attached directly to the host system tha requires the space. + - NAS - Network Attached Storage quite similar to NFS server. + - SAN - Storage Aread Network, this technology uses a fiber channel for providing high-speed storage. + + #### NFS + + - NFS - Does not store data in blocks. Instead, it saves data in form of files. It works on service-client model. + + - NFS server maintains an export configuration file at **`/etc/exports`** that defines the clients which should be able to + access the directories on the server. **`/etc/exports`** looks like this + + ``` + [~]$ /etc/exports + /software/repos 10.61.35.201 10.61.35.202 10.61.35.203 + ``` + + - To exports all the mounts defined in **`/etc/exports`** use + + ``` + [~]$ exportsfs -a + ``` + + - To manually export a directory use below command + + ``` + [~]$ exportsfs -o 10.61.35.201:/software/repos + ``` + +# HANDS-ON LABS + + - Lets had over to the [NFS LABS](https://kodekloud.com/courses/873064/lectures/17311763) \ No newline at end of file diff --git a/docs/08-Storage in Linux/05- LVM.md b/docs/08-Storage in Linux/05- LVM.md new file mode 100644 index 0000000..1278c1e --- /dev/null +++ b/docs/08-Storage in Linux/05- LVM.md @@ -0,0 +1,166 @@ +# LOGICAL VOLUME MANAGER + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074606) + + - LVM allows grouping of multiple physical volumes, which are hard disks or partitions into a volume group. + - Volumegroups can be carve out logical volumes. + + ![LVM](../images/lvm.PNG) + + #### Working with LVM + + - To make use of LVM, install the package **`LVM`** . + + ``` + [~]$ apt-get install lvm2 + ``` + + - Use **`pvcreate`** command to create a Physical Volume. + + ``` + [~]$ pvcreate /dev/sdb + Physical volume "/dev/sdb" successfully created + ``` + + - Use **`vgcreate`** command to create a Volume Group. + + ``` + [~]$ vgcreate caleston_vg /dev/sdb + Volume group "caleston_vg" successfully created + ``` + + - Use **`pvdisplay`** command to list all the PVs their names, size and the Volume group it is part of. + + ``` + [~]$ pvdisplay + --- Physical volume --- + PV Name /dev/sdb + VG Name caleston_vg + PV Size 20.00 GiB / not usable 3.00 MiB + Allocatable yes + PE Size 4.00 MiB + Total PE 5119 + Free PE 5119 + Allocated PE 0 + PV UUID iDCXIN-En2h-5ilJ-Yjqv-GcsR-gDfV-zaf66E + ``` + + - Use **`vgdisplay`** to see more details of the VG. + + ``` + [~]$ vgdisplay + --- Volume group --- + VG Name caleston_vg + System ID + Format lvm2 + Metadata Areas 1 + Metadata Sequence No 1 + VG Access read/write + VG Status resizable + MAX LV 0 + Cur LV 0 + Open LV 0 + Max PV 0 + Cur PV 1 + Act PV 1 + VG Size 20.00 GiB + PE Size 4.00 MiB + Total PE 5119 + Alloc PE / Size 0 / 0 + Free PE / Size 5119 / 20.00 GiB + VG UUID VzmIAn-9cEl5bA-lVtm-wHKX-KQaObR + ``` + + - To create the Logical Volumes, you can use **`lvcreate`** command + + ``` + [~]$ lvcreate –L 1G –n vol1 caleston_vg + Logical volume "vol1" created. + ``` + + - To display the Logical Volumes, you can use **`lvdisplay`** command + + ``` + [~]$ lvdisplay + --- Logical volume --- + LV Path /dev/caleston_vg/vol1 + LV Name vol1 + VG Name caleston_vg + LV UUID LueYC3-VWpE31-UaYk-wjIR-FjAOyL + LV Write Access read/write + LV Creation host, time master, 2020-03-31 06:26:14 + LV Status available + # open 0 + LV Size 1.00 GiB + Current LE 256 + Segments 1 + Allocation inherit + Read ahead sectors auto + - currently set to 256 + Block device 252:0 + ``` + + - To list the volume, you can use **`lvs`** command + + ``` + [~]$ lvs + LV VG Attr LSize Pool + vol1 caleston_vg -wi-a----- 1.00g + ``` + + - Now to create an filesystem you can use **`mkfs`** command + + ``` + [~]$ mkfs.ext4 /dev/caleston_vg/vol1 + ``` + + - To mount the filesystem use **`mount`** command + + ``` + [~]$ mount –t ext4 /dev/caleston_vg/vol1 /mnt/vol1 + ``` + + - Now logical volume is now available for use. Lets resize the filesystem on vol1 while it is mounted. Check the free space available. + + ``` + [~]$ vgs + VG #PV #LV #SN Attr VSize VFree + caleston_vg 1 1 0 wz--n- 20.00g 19.00g + ``` + + ``` + [~]$ lvresize -L +1G -n /dev/caleston_vg/vol1 + Logical volume vol1 successfully resized. + ``` + + ``` + [~]$ df –hP /mnt/vol1 + Filesystem Size Used Avail Use% Mounted on + /dev/mapper/caleston_vg-vol1 976M 1.3M 908M 1% /mnt/vol1 + ``` + + - Now to resize the file system use **`resize2fs`** command. + + ``` + [~]$ resize2fs /dev/caleston_vg/vol1 + resize2fs 1.42.13 (17-May-2015) + Filesystem at /dev/mapper/caleston_vg-vol1 is mounted on + /mnt/vol1; on-line resizing required + old_desc_blocks = 1, new_desc_blocks = 1 + The filesystem on //dev/mapper/caleston_vg-vol1 is now 524288 + (4k) blocks long. + ``` + + - Now run **`df -hp`** command to verify the size of the mounted filesystem + + ``` + [~]$ df –hP /mnt/vol1 + Filesystem Size Used Avail Use% Mounted on + /dev/mapper/caleston_vg-vol1 2.0G 1.6M 1.9G 1% /mnt/vol1 + ``` + + ![LVM2](../images/lvm2.PNG) + +# HANDS-ON LABS + + - Lets head over to the hands-on labs of [LVM](https://kodekloud.com/courses/873064/lectures/17074607) \ No newline at end of file diff --git a/docs/08-Storage in Linux/06-Project Status Meeting.md b/docs/08-Storage in Linux/06-Project Status Meeting.md new file mode 100644 index 0000000..77ac606 --- /dev/null +++ b/docs/08-Storage in Linux/06-Project Status Meeting.md @@ -0,0 +1,3 @@ +# Project Status Meeting + + - Join the [Meeting](https://kodekloud.com/courses/873064/lectures/17314533) \ No newline at end of file diff --git a/docs/09-Service management with SYSTEMD/01-Working Overtime Story.md b/docs/09-Service management with SYSTEMD/01-Working Overtime Story.md new file mode 100644 index 0000000..9897147 --- /dev/null +++ b/docs/09-Service management with SYSTEMD/01-Working Overtime Story.md @@ -0,0 +1,6 @@ +# Working Overtime + + Lets hear the [Story](https://kodekloud.com/courses/873064/lectures/17074642) + + + diff --git a/docs/09-Service management with SYSTEMD/02-Creating a SYSTEMD Service.md b/docs/09-Service management with SYSTEMD/02-Creating a SYSTEMD Service.md new file mode 100644 index 0000000..218b1fb --- /dev/null +++ b/docs/09-Service management with SYSTEMD/02-Creating a SYSTEMD Service.md @@ -0,0 +1,59 @@ +# Creating your own SYSTEMD Service + +- Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074644) + +In this lecture we will learn how to create a SYSTEMD Service. +- All the major distributions, such as Rhel, CentOS, Fedora, Ubuntu, Debian and Archlinux, adopted systemd as their init system. +- Systemd is a Linux initialization system and service manager that includes features like on-demand starting of daemons, mount and automount point maintenance etc. +- Systemd also provides a logging daemon and other tools and utilities to help with common system administration tasks. + +#### What is a service unit? + +- A file with the .service suffix contains information about a process which is managed by systemd. It is composed by three main sections: + + #### 1.Unit + + - The **`Unit`** section of a .service file contains the description of the unit itself, and information about its behavior and its dependencies: (to work correctly a service can depend on another one). Here we discuss some of the most relevant options which can be used in this section + - First of all we have the **`Description`** option. By using this option we can provide a description of the unit. The description will then appear, for example, when calling the systemctl command, which returns an overview of the status of systemd. + - Secondly, we have **`Documentation`** option. By using this option we can get the details of the service and documentation related to it. + - By using the **`After`** option, we can state that our unit should be started after the units we provide in the form of a space-separated list. + + ``` + [~]$ cat /etc/systemd/system/project-mercury.service + [Unit] + Description=Python Django for Project Mercury + Documentation=http://wiki.caleston-dev.ca/mercury + After=postgresql.service + ``` + + + #### 2.Service + + - In the **`Service`** section of a service unit, we can specify things as the command to be executed when the service is started, or the type of the service itself. + + ``` + [Service] + ExecStart=/usr/bin/project-mercury.sh + User=project_mercury + Restart=on-failure + RestartSec=10 + ``` + + #### 3.Install + + - This **`Install`** section contains information about the installation of the unit + + ``` + [Install] + WantedBy=graphical.target + ``` + +#### How to Start the Service now ? + +- The system to detect the changes you have done in the file, we need to reload the daemon and start the service. + + ``` + [~]$ systemctl daemon-reload + + [~]$ systemctl start project-mercury.service + ``` \ No newline at end of file diff --git a/docs/09-Service management with SYSTEMD/03-SYSTEMD Tools.md b/docs/09-Service management with SYSTEMD/03-SYSTEMD Tools.md new file mode 100644 index 0000000..e9eb9d5 --- /dev/null +++ b/docs/09-Service management with SYSTEMD/03-SYSTEMD Tools.md @@ -0,0 +1,123 @@ +# SYSTEMD Tools to Manage SYSTEMD service + + - Take me to the [Tutorial](https://kodekloud.com/courses/873064/lectures/17074645) + + In this lecture we will explore two major SYSTEMD tools: + - SYSTEMCTL + - JOURNALCTL + + ## SYSTEMCTL + + - __Systemctl__ is the main command used to manage services on a **`SYSTEMD`** managed server. + - It can be used to manage services such as **`START/STOP/RESTART/RELOAD`** as well as **`ENABLE/DISABLE`** services + during the system boot. + - It is also used to **`LIST AND MANAGE UNITS`** and **`LIST AND UPDATE TARGETS`** + + ![Systemctl](../images/systemctl.png) + + ### Systemctl Commands + + - To start a service use the start command, for example to start a docker service use **`systemctl start docker`** + + ``` + [~]$ systemctl start docker + ``` + + - To stop a service use the stop command, for example to stop a docker service use **`systemctl stop docker`** + + ``` + [~]$ systemctl stop docker + ``` + - To restart a service use the restart command, for example to restart a docker service use **`systemctl restart docker`** this will stop and start again. + + ``` + [~]$ systemctl restart docker + ``` + - To reload a service use the reload command, for example to reload a docker service use **`systemctl reload docker`**, this will reload all the configuration without interrupting the normal functionaltiy of the service + + ``` + [~]$ systemctl reload docker + ``` + - To enable a service and make it persistent accross reboots use the enable command, for example to enable a docker service use **`systemctl enable docker`** + + ``` + [~]$ systemctl enable docker + ``` + + - To disable a service at boot use the disable command, for example to disable a docker service use **`systemctl disable docker`** command. + + ``` + [~]$ systemctl disable docker + ``` + + - To know the status of the service use **`systemctl status docker`** command. This command provided the state of the service. If running properly is should show **`active (running)`** state as shown in screenshot below. + + ``` + [~]$ systemctl status docker + ``` + + - Besides **`active (running)`** state there are few other state that you should be aware off. + + ![Other](../images/otherstate.PNG) + + - Running **`systemctl daemon reload`** command after making changes to service unit file reloads the system manager configuration and makes the systemd aware of the changes. + + - To edit the service file use command **`systemctl edit project-mercury.service --full`** this will open a text editor, you can make the changes and re-write the settings as needed, making changing this way applied immediately without running the **`systemctl daemon reload`** command + + ``` + [~]$ systemctl daemon-reload + ``` + ``` + [~]$ systemctl edit project-mercury.service --full + ``` + - To see the current runlevel use **`systemctl get-default`** + + ``` + [~]$ systemctl get default + ``` + + - To change the runleve to a different target use **`systemctl set-default multi-user.target`** + + ``` + [~]$ systemctl set-default multi-user.target + ``` + + - To list all the units that systemd has loaded use **`systemctl list-units --all`**, this lists all the unit which are active, inactive or anyother state. + + ``` + [~]$ systemctl list-units --all + ``` + + - To list only active units use **`systemctl list-units`** command + + ``` + [~]$ systemctl list-units + ``` + + + ## JOURNALCTL + + - __Journalctl__ is a command for quering/viewing logs collected by systemd. + - The systemd-journald service is responsible for systemd’s log collection, and it retrieves messages from the kernel systemd services, and other sources. + - Very useful when you are troubleshooting issues with systemd services. + + ![Journalctl](../images/journalctl.png) + + - Using **`journalctl`** commands print all the log entries from oldest to the newest. + - Using **`journalctl -b`** command print all the logs from the current boot. + - Using **`journalctl -u docker.service`** command print all the logs specific to the unit specified, for example docker in this case. + + ``` + [~]$ journalctl + ``` + + ``` + [~]$ journalctl -b + ``` + + ``` + [~]$ journalctl -u docker.service + ``` +## HANDS-ON LABS + + - Now lets troubleshoot and help **`Bob`** [Let's Help Bob](https://kodekloud.com/courses/the-linux-basics-course/lectures/17074647) \ No newline at end of file diff --git a/docs/10-The Client Demonstration/01-Client Demonstration in Jeopardy!(story).md b/docs/10-The Client Demonstration/01-Client Demonstration in Jeopardy!(story).md new file mode 100644 index 0000000..8bd11bf --- /dev/null +++ b/docs/10-The Client Demonstration/01-Client Demonstration in Jeopardy!(story).md @@ -0,0 +1,3 @@ +# Client Demonstration in Jeopardy! + + Let's hear the [Story](https://kodekloud.com/courses/873064/lectures/17074646) \ No newline at end of file diff --git a/docs/10-The Client Demonstration/02-Troubleshoot the Development Environment.md b/docs/10-The Client Demonstration/02-Troubleshoot the Development Environment.md new file mode 100644 index 0000000..257e8c7 --- /dev/null +++ b/docs/10-The Client Demonstration/02-Troubleshoot the Development Environment.md @@ -0,0 +1,3 @@ +# Troubleshoot the Development Environment + + [Troubleshoot](https://kodekloud.com/courses/873064/lectures/17074648) the Development Environment \ No newline at end of file diff --git a/docs/10-The Client Demonstration/03-Finale (story).md b/docs/10-The Client Demonstration/03-Finale (story).md new file mode 100644 index 0000000..e116c59 --- /dev/null +++ b/docs/10-The Client Demonstration/03-Finale (story).md @@ -0,0 +1,3 @@ +# Finale (story) + + Lets Hear the Finale[Story](https://kodekloud.com/courses/873064/lectures/17074664) \ No newline at end of file diff --git a/images/Install.PNG b/images/Install.PNG new file mode 100644 index 0000000..dae908c Binary files /dev/null and b/images/Install.PNG differ diff --git a/images/Link.PNG b/images/Link.PNG new file mode 100644 index 0000000..60cb52f Binary files /dev/null and b/images/Link.PNG differ diff --git a/images/Service.PNG b/images/Service.PNG new file mode 100644 index 0000000..474dfc4 Binary files /dev/null and b/images/Service.PNG differ diff --git a/images/active.PNG b/images/active.PNG new file mode 100644 index 0000000..8c33e37 Binary files /dev/null and b/images/active.PNG differ diff --git a/images/auth.PNG b/images/auth.PNG new file mode 100644 index 0000000..e365d8b Binary files /dev/null and b/images/auth.PNG differ diff --git a/images/copy.PNG b/images/copy.PNG new file mode 100644 index 0000000..35891b8 Binary files /dev/null and b/images/copy.PNG differ diff --git a/images/default.PNG b/images/default.PNG new file mode 100644 index 0000000..eeb6bcb Binary files /dev/null and b/images/default.PNG differ diff --git a/images/disable.PNG b/images/disable.PNG new file mode 100644 index 0000000..9dd6567 Binary files /dev/null and b/images/disable.PNG differ diff --git a/images/disk.PNG b/images/disk.PNG new file mode 100644 index 0000000..a04cd43 Binary files /dev/null and b/images/disk.PNG differ diff --git a/images/dns.PNG b/images/dns.PNG new file mode 100644 index 0000000..1f68bc3 Binary files /dev/null and b/images/dns.PNG differ diff --git a/images/edit.PNG b/images/edit.PNG new file mode 100644 index 0000000..604cd65 Binary files /dev/null and b/images/edit.PNG differ diff --git a/images/egp.PNG b/images/egp.PNG new file mode 100644 index 0000000..f4bf245 Binary files /dev/null and b/images/egp.PNG differ diff --git a/images/enable.PNG b/images/enable.PNG new file mode 100644 index 0000000..3820190 Binary files /dev/null and b/images/enable.PNG differ diff --git a/images/filep.PNG b/images/filep.PNG new file mode 100644 index 0000000..55e42c5 Binary files /dev/null and b/images/filep.PNG differ diff --git a/images/fs.PNG b/images/fs.PNG new file mode 100644 index 0000000..3ae9bec Binary files /dev/null and b/images/fs.PNG differ diff --git a/images/fstab.PNG b/images/fstab.PNG new file mode 100644 index 0000000..721b471 Binary files /dev/null and b/images/fstab.PNG differ diff --git a/images/group.PNG b/images/group.PNG new file mode 100644 index 0000000..314f95c Binary files /dev/null and b/images/group.PNG differ diff --git a/images/iplink.PNG b/images/iplink.PNG new file mode 100644 index 0000000..c3bb60c Binary files /dev/null and b/images/iplink.PNG differ diff --git a/images/jlog.PNG b/images/jlog.PNG new file mode 100644 index 0000000..db7309c Binary files /dev/null and b/images/jlog.PNG differ diff --git a/images/journalctl.png b/images/journalctl.png new file mode 100644 index 0000000..22acd6d Binary files /dev/null and b/images/journalctl.png differ diff --git a/images/key.PNG b/images/key.PNG new file mode 100644 index 0000000..8557637 Binary files /dev/null and b/images/key.PNG differ diff --git a/images/linux.PNG b/images/linux.PNG new file mode 100644 index 0000000..90f4291 Binary files /dev/null and b/images/linux.PNG differ diff --git a/images/list.PNG b/images/list.PNG new file mode 100644 index 0000000..8cc0407 Binary files /dev/null and b/images/list.PNG differ diff --git a/images/lvm.PNG b/images/lvm.PNG new file mode 100644 index 0000000..b069dea Binary files /dev/null and b/images/lvm.PNG differ diff --git a/images/lvm2.PNG b/images/lvm2.PNG new file mode 100644 index 0000000..9cdf93d Binary files /dev/null and b/images/lvm2.PNG differ diff --git a/images/manage.PNG b/images/manage.PNG new file mode 100644 index 0000000..fe3acae Binary files /dev/null and b/images/manage.PNG differ diff --git a/images/net.PNG b/images/net.PNG new file mode 100644 index 0000000..40eea5c Binary files /dev/null and b/images/net.PNG differ diff --git a/images/otherstate.PNG b/images/otherstate.PNG new file mode 100644 index 0000000..5984015 Binary files /dev/null and b/images/otherstate.PNG differ diff --git a/images/partition.PNG b/images/partition.PNG new file mode 100644 index 0000000..87794ba Binary files /dev/null and b/images/partition.PNG differ diff --git a/images/passwd.PNG b/images/passwd.PNG new file mode 100644 index 0000000..2b2cd5d Binary files /dev/null and b/images/passwd.PNG differ diff --git a/images/perm.PNG b/images/perm.PNG new file mode 100644 index 0000000..abab9d1 Binary files /dev/null and b/images/perm.PNG differ diff --git a/images/pless.PNG b/images/pless.PNG new file mode 100644 index 0000000..900fc21 Binary files /dev/null and b/images/pless.PNG differ diff --git a/images/record.PNG b/images/record.PNG new file mode 100644 index 0000000..708436f Binary files /dev/null and b/images/record.PNG differ diff --git a/images/reload.PNG b/images/reload.PNG new file mode 100644 index 0000000..b263ef9 Binary files /dev/null and b/images/reload.PNG differ diff --git a/images/reloadsvc.PNG b/images/reloadsvc.PNG new file mode 100644 index 0000000..6ced6d2 Binary files /dev/null and b/images/reloadsvc.PNG differ diff --git a/images/restart.PNG b/images/restart.PNG new file mode 100644 index 0000000..e856709 Binary files /dev/null and b/images/restart.PNG differ diff --git a/images/root.PNG b/images/root.PNG new file mode 100644 index 0000000..661211f Binary files /dev/null and b/images/root.PNG differ diff --git a/images/routing.PNG b/images/routing.PNG new file mode 100644 index 0000000..def5509 Binary files /dev/null and b/images/routing.PNG differ diff --git a/images/runlevel.PNG b/images/runlevel.PNG new file mode 100644 index 0000000..75da903 Binary files /dev/null and b/images/runlevel.PNG differ diff --git a/images/scp.PNG b/images/scp.PNG new file mode 100644 index 0000000..9ec9b45 Binary files /dev/null and b/images/scp.PNG differ diff --git a/images/shadow.PNG b/images/shadow.PNG new file mode 100644 index 0000000..f8f568f Binary files /dev/null and b/images/shadow.PNG differ diff --git a/images/site.PNG b/images/site.PNG new file mode 100644 index 0000000..f86db66 Binary files /dev/null and b/images/site.PNG differ diff --git a/images/start.PNG b/images/start.PNG new file mode 100644 index 0000000..f87f222 Binary files /dev/null and b/images/start.PNG differ diff --git a/images/status.png b/images/status.png new file mode 100644 index 0000000..0d3d19e Binary files /dev/null and b/images/status.png differ diff --git a/images/stop.PNG b/images/stop.PNG new file mode 100644 index 0000000..1339518 Binary files /dev/null and b/images/stop.PNG differ diff --git a/images/sudo.PNG b/images/sudo.PNG new file mode 100644 index 0000000..dfe330e Binary files /dev/null and b/images/sudo.PNG differ diff --git a/images/switch.PNG b/images/switch.PNG new file mode 100644 index 0000000..291ceb4 Binary files /dev/null and b/images/switch.PNG differ diff --git a/images/systemctl.png b/images/systemctl.png new file mode 100644 index 0000000..5aadfc0 Binary files /dev/null and b/images/systemctl.png differ diff --git a/images/type.PNG b/images/type.PNG new file mode 100644 index 0000000..c823394 Binary files /dev/null and b/images/type.PNG differ diff --git a/images/unit.PNG b/images/unit.PNG new file mode 100644 index 0000000..7d35f04 Binary files /dev/null and b/images/unit.PNG differ diff --git a/images/user.PNG b/images/user.PNG new file mode 100644 index 0000000..6de6890 Binary files /dev/null and b/images/user.PNG differ diff --git a/images/useradd.PNG b/images/useradd.PNG new file mode 100644 index 0000000..fa238cc Binary files /dev/null and b/images/useradd.PNG differ diff --git a/images/who.PNG b/images/who.PNG new file mode 100644 index 0000000..c276558 Binary files /dev/null and b/images/who.PNG differ