mirror of
https://github.com/thecyberlearn/devops-notes.git
synced 2026-08-18 07:52:51 +00:00
Add Linux DevOps notes (Day 1-3)
This commit is contained in:
commit
244ad643f0
53
01_Linux_Basics.md
Normal file
53
01_Linux_Basics.md
Normal file
@ -0,0 +1,53 @@
|
||||
# Linux – Basic Commands (Day 1)
|
||||
|
||||
## What is Linux?
|
||||
Linux is an operating system used to run servers and applications.
|
||||
|
||||
## Why Linux is important for DevOps?
|
||||
Most servers run on Linux, and DevOps engineers manage everything using Linux commands.
|
||||
|
||||
## Linux Folder Structure
|
||||
- / → root
|
||||
- /home → user files
|
||||
- /etc → configuration files
|
||||
- /var → logs and data
|
||||
- /bin → system commands
|
||||
|
||||
## Navigation Commands
|
||||
```bash
|
||||
pwd # show current directory
|
||||
ls # list files
|
||||
ls -l # detailed list
|
||||
ls -a # show hidden files
|
||||
cd folder # move into folder
|
||||
cd .. # go back
|
||||
cd ~ # go to home
|
||||
```
|
||||
|
||||
## Create & Delete Commands
|
||||
```bash
|
||||
mkdir app
|
||||
touch file.txt
|
||||
rm file.txt
|
||||
rm -r app
|
||||
```
|
||||
|
||||
## Working with File Content
|
||||
```bash
|
||||
cat file.txt
|
||||
head file.txt
|
||||
echo "Linux for DevOps" > info.txt # write content
|
||||
echo "Day 1 completed" >> info.txt # append content
|
||||
cat info.txt # view file content
|
||||
```
|
||||
|
||||
## Daily Useful Linux Commands
|
||||
```bash
|
||||
clear # clear terminal screen
|
||||
history # show command history
|
||||
whoami # show current user
|
||||
uname -a # show system information
|
||||
```
|
||||
|
||||
|
||||
|
||||
207
02_Linux_Permissions.md
Normal file
207
02_Linux_Permissions.md
Normal file
@ -0,0 +1,207 @@
|
||||
# Linux – File Permissions (Day 2)
|
||||
|
||||
## What are File Permissions?
|
||||
File permissions control **who can read, write, or execute** a file or folder in Linux.
|
||||
|
||||
They protect the system from:
|
||||
- accidental deletion
|
||||
- unauthorized access
|
||||
- hacking
|
||||
|
||||
---
|
||||
|
||||
## Why Permissions are Important for DevOps?
|
||||
DevOps engineers manage **live servers**.
|
||||
Wrong permissions can:
|
||||
- break applications
|
||||
- expose data
|
||||
- allow hackers access
|
||||
|
||||
So permissions are **critical**.
|
||||
|
||||
---
|
||||
|
||||
## Permission Types
|
||||
|
||||
There are 3 permissions:
|
||||
|
||||
- r → read
|
||||
- w → write
|
||||
- x → execute
|
||||
|
||||
---
|
||||
|
||||
## Permission Groups
|
||||
|
||||
Permissions are set for 3 types of users:
|
||||
|
||||
- u → user (owner)
|
||||
- g → group
|
||||
- o → others
|
||||
|
||||
Order is always:
|
||||
|
||||
## user | group | others
|
||||
|
||||
---
|
||||
|
||||
## Checking Permissions
|
||||
|
||||
```bash
|
||||
ls -l
|
||||
-rwxr-xr--
|
||||
Meaning:
|
||||
|
||||
user → rwx
|
||||
|
||||
group → r-x
|
||||
|
||||
others → r--
|
||||
|
||||
Add values to set permissions.
|
||||
|
||||
Examples:
|
||||
|
||||
7 = rwx (4+2+1)
|
||||
|
||||
6 = rw- (4+2)
|
||||
|
||||
5 = r-x (4+1)
|
||||
|
||||
4 = r--
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Setting Permissions
|
||||
|
||||
```bash
|
||||
chmod 755 file.txt
|
||||
```
|
||||
|
||||
Meaning:
|
||||
|
||||
user → 7 (rwx)
|
||||
|
||||
group → 5 (r-x)
|
||||
|
||||
others → 5 (r-x)
|
||||
|
||||
## Symbolic Method
|
||||
|
||||
```bash
|
||||
chmod u+x file.sh
|
||||
chmod g-w file.sh
|
||||
chmod o+r file.sh
|
||||
```
|
||||
|
||||
## Common Permission Examples
|
||||
|
||||
```bash
|
||||
chmod 755 file.txt
|
||||
chmod 644 file.txt
|
||||
chmod 777 file.txt
|
||||
chmod 666 file.txt
|
||||
chmod 700 file.txt
|
||||
chmod 600 file.txt
|
||||
```
|
||||
|
||||
## Execute Permission (Very Important)
|
||||
|
||||
To run a script:
|
||||
|
||||
```bash
|
||||
./script.sh
|
||||
```
|
||||
|
||||
|
||||
If permission denied:
|
||||
|
||||
```bash
|
||||
chmod +x script.sh
|
||||
```
|
||||
|
||||
## Folder Permissions Rule
|
||||
|
||||
```bash
|
||||
r → list files
|
||||
w → create/delete files
|
||||
x → enter folder
|
||||
```
|
||||
|
||||
Without x, you cannot cd into folder.
|
||||
|
||||
## Execute Permission (Very Important)
|
||||
|
||||
To run a script:
|
||||
|
||||
```bash
|
||||
./script.sh
|
||||
```
|
||||
|
||||
|
||||
If permission denied:
|
||||
|
||||
```bash
|
||||
chmod +x script.sh
|
||||
```
|
||||
|
||||
## Folder Permissions Rule
|
||||
|
||||
```bash
|
||||
r → list files
|
||||
|
||||
w → create/delete files
|
||||
|
||||
x → enter folder
|
||||
```
|
||||
Without x, you cannot cd into folder.
|
||||
|
||||
|
||||
## Mini Practice Task
|
||||
|
||||
```bash
|
||||
mkdir test
|
||||
touch test/app.sh
|
||||
ls -l test
|
||||
chmod 755 test/app.sh
|
||||
ls -l test
|
||||
```
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
- Giving 777 permissions (very dangerous)
|
||||
- Not understanding folder execute permission
|
||||
- Changing permissions blindly on production servers
|
||||
|
||||
|
||||
## Changing Ownership
|
||||
|
||||
To change the owner of a file:
|
||||
```bash
|
||||
sudo chown username file.txt
|
||||
```
|
||||
|
||||
To change both owner and group:
|
||||
```bash
|
||||
sudo chown username:groupname file.txt
|
||||
```
|
||||
|
||||
To change the group ownership:
|
||||
```bash
|
||||
sudo chgrp groupname file.txt
|
||||
```
|
||||
|
||||
## Recursive Changes
|
||||
Apply permissions or ownership to a directory and all its contents:
|
||||
```bash
|
||||
chmod -R 755 folder_name/
|
||||
chown -R username:groupname folder_name/
|
||||
```
|
||||
|
||||
## Checking Current Permissions
|
||||
To see detailed permissions for all files in a directory:
|
||||
```bash
|
||||
ls -la
|
||||
```
|
||||
|
||||
207
03_Linux_Users_Ownership.md
Normal file
207
03_Linux_Users_Ownership.md
Normal file
@ -0,0 +1,207 @@
|
||||
# Linux – Users & Ownership (Day 3)
|
||||
|
||||
## What are Users in Linux?
|
||||
Linux is a multi-user system.
|
||||
Each file and process runs under a specific user.
|
||||
|
||||
This prevents:
|
||||
- accidental damage
|
||||
- security issues
|
||||
- one app affecting another
|
||||
|
||||
---
|
||||
|
||||
## Why Users Matter in DevOps?
|
||||
Applications **never run as root** in production.
|
||||
Each service has its own user for safety.
|
||||
|
||||
DevOps engineers:
|
||||
- create users
|
||||
- assign ownership
|
||||
- control access
|
||||
|
||||
---
|
||||
|
||||
## User Types
|
||||
- root → superuser (full access)
|
||||
- normal user → regular work
|
||||
- system user → runs services (nginx, docker)
|
||||
|
||||
---
|
||||
|
||||
## Check Current User
|
||||
```bash
|
||||
whoami
|
||||
```
|
||||
|
||||
## View All Users
|
||||
```bash
|
||||
cat /etc/passwd
|
||||
```
|
||||
|
||||
## Create a New User
|
||||
```bash
|
||||
sudo useradd devuser
|
||||
```
|
||||
|
||||
## Set password:
|
||||
```bash
|
||||
sudo passwd devuser
|
||||
```
|
||||
|
||||
## Switch User
|
||||
```bash
|
||||
su devuser
|
||||
```
|
||||
|
||||
## Exit user
|
||||
```bash
|
||||
exit
|
||||
```
|
||||
|
||||
## Groups in Linux
|
||||
|
||||
Users belong to groups.
|
||||
Groups help manage permissions easily.
|
||||
|
||||
## Check groups:
|
||||
|
||||
```bash
|
||||
groups
|
||||
```
|
||||
|
||||
## Add user to group:
|
||||
|
||||
```bash
|
||||
sudo usermod -aG sudo devuser
|
||||
```
|
||||
|
||||
## File Ownership
|
||||
|
||||
Each file has:
|
||||
|
||||
owner
|
||||
|
||||
group
|
||||
|
||||
## Check ownership:
|
||||
|
||||
```bash
|
||||
ls -l
|
||||
```
|
||||
|
||||
## Change Ownership (chown)
|
||||
```bash
|
||||
sudo chown devuser file.txt
|
||||
sudo chown devuser:devuser file.txt
|
||||
```
|
||||
|
||||
## Change Group Only
|
||||
```bash
|
||||
sudo chgrp devuser file.txt
|
||||
```
|
||||
|
||||
## Real DevOps Scenario
|
||||
|
||||
Application folder:
|
||||
|
||||
owned by app user
|
||||
|
||||
not by root
|
||||
|
||||
correct permissions
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
sudo mkdir /var/myapp
|
||||
sudo chown devuser:devuser /var/myapp
|
||||
sudo chmod 755 /var/myapp
|
||||
```
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
Running apps as root
|
||||
|
||||
Wrong ownership causing permission denied
|
||||
|
||||
Using sudo unnecessarily
|
||||
|
||||
DevOps Rule
|
||||
|
||||
❌ root everywhere
|
||||
✅ least privilege access
|
||||
|
||||
|
||||
## Exit user:
|
||||
|
||||
```bash
|
||||
exit
|
||||
```
|
||||
|
||||
## Groups in Linux
|
||||
|
||||
Users belong to groups.
|
||||
Groups help manage permissions easily.
|
||||
|
||||
## Check groups:
|
||||
|
||||
groups
|
||||
|
||||
## Add user to group:
|
||||
|
||||
sudo usermod -aG sudo devuser
|
||||
|
||||
## File Ownership
|
||||
|
||||
Each file has:
|
||||
|
||||
owner
|
||||
|
||||
group
|
||||
|
||||
## Check ownership:
|
||||
|
||||
```bash
|
||||
ls -l
|
||||
```
|
||||
|
||||
## Change Ownership (chown)
|
||||
```bash
|
||||
sudo chown devuser file.txt
|
||||
sudo chown devuser:devuser file.txt
|
||||
```
|
||||
|
||||
## Change Group Only
|
||||
```bash
|
||||
sudo chgrp devuser file.txt
|
||||
```
|
||||
|
||||
## Real DevOps Scenario
|
||||
|
||||
Application folder:
|
||||
|
||||
owned by app user
|
||||
|
||||
not by root
|
||||
|
||||
correct permissions
|
||||
|
||||
Example:
|
||||
|
||||
sudo mkdir /var/myapp
|
||||
sudo chown devuser:devuser /var/myapp
|
||||
sudo chmod 755 /var/myapp
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
Running apps as root
|
||||
|
||||
Wrong ownership causing permission denied
|
||||
|
||||
Using sudo unnecessarily
|
||||
|
||||
## DevOps Rule
|
||||
|
||||
❌ root everywhere
|
||||
✅ least privilege access
|
||||
134
04_Linux_Networking_Basics.md
Normal file
134
04_Linux_Networking_Basics.md
Normal file
@ -0,0 +1,134 @@
|
||||
# Linux – Networking Basics (Day 4)
|
||||
|
||||
## What is Networking in Linux?
|
||||
Networking means how computers and servers communicate with each other
|
||||
using IP addresses, ports, and protocols.
|
||||
|
||||
Every DevOps engineer must understand networking
|
||||
because applications run on networks.
|
||||
|
||||
---
|
||||
|
||||
## Why Networking is Important for DevOps?
|
||||
If networking fails:
|
||||
- app will not open
|
||||
- server looks “down”
|
||||
- deployment fails
|
||||
|
||||
Most DevOps issues are actually network issues.
|
||||
|
||||
---
|
||||
|
||||
## IP Address
|
||||
An IP address identifies a machine on a network.
|
||||
|
||||
Check IP:
|
||||
```bash
|
||||
ip a
|
||||
```
|
||||
or
|
||||
```bash
|
||||
ifconfig
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Hostname
|
||||
```bash
|
||||
hostname
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ping Command
|
||||
```bash
|
||||
ping google.com
|
||||
```
|
||||
Stop ping:
|
||||
```bash
|
||||
Ctrl + C
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## curl Command (VERY IMPORTANT)
|
||||
```bash
|
||||
curl google.com
|
||||
curl -I google.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## wget Command
|
||||
```bash
|
||||
wget https://example.com/file.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ports (CRITICAL CONCEPT)
|
||||
Common ports:
|
||||
- 22 → SSH
|
||||
- 80 → HTTP
|
||||
- 443 → HTTPS
|
||||
- 3306 → MySQL
|
||||
|
||||
---
|
||||
|
||||
## Check Open Ports
|
||||
```bash
|
||||
netstat -tuln
|
||||
```
|
||||
or
|
||||
```bash
|
||||
ss -tuln
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Check Which Process Uses a Port
|
||||
```bash
|
||||
sudo netstat -tulnp
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## DNS Resolution
|
||||
```bash
|
||||
nslookup google.com
|
||||
dig google.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test Server Connectivity
|
||||
```bash
|
||||
telnet google.com 80
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Real DevOps Scenario
|
||||
Commands used:
|
||||
```bash
|
||||
curl
|
||||
ping
|
||||
netstat
|
||||
ss
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes
|
||||
- Forgetting port number
|
||||
- Confusing localhost and public IP
|
||||
|
||||
---
|
||||
|
||||
## DevOps Rule
|
||||
If something doesn’t work → check network first.
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
Linux networking basics: IP, ports, ping, curl, DNS, and open ports.
|
||||
163
05_Linux_SSH_Remote_Access.md
Normal file
163
05_Linux_SSH_Remote_Access.md
Normal file
@ -0,0 +1,163 @@
|
||||
# Linux – SSH & Remote Server Access (Day 5)
|
||||
|
||||
## What is SSH?
|
||||
SSH (Secure Shell) is used to securely connect to a remote server.
|
||||
DevOps engineers use SSH daily to manage cloud servers.
|
||||
|
||||
---
|
||||
|
||||
## Why SSH is Important for DevOps?
|
||||
- Access cloud servers (AWS EC2, VPS)
|
||||
- Deploy applications
|
||||
- Debug production issues
|
||||
- Manage configurations
|
||||
|
||||
No SSH = no DevOps work.
|
||||
|
||||
---
|
||||
|
||||
## Basic SSH Syntax
|
||||
```bash
|
||||
ssh user@server_ip
|
||||
```
|
||||
|
||||
Example:
|
||||
```bash
|
||||
ssh ubuntu@13.234.56.78
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Default SSH Port
|
||||
- Port 22
|
||||
|
||||
Custom port example:
|
||||
```bash
|
||||
ssh -p 2222 user@server_ip
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SSH First-Time Connection
|
||||
You may see:
|
||||
```
|
||||
Are you sure you want to continue connecting (yes/no)?
|
||||
```
|
||||
|
||||
Type:
|
||||
```text
|
||||
yes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## SSH Key-Based Authentication (VERY IMPORTANT)
|
||||
|
||||
Instead of passwords, DevOps uses SSH keys.
|
||||
|
||||
Benefits:
|
||||
- More secure
|
||||
- No password typing
|
||||
- Required by cloud providers
|
||||
|
||||
---
|
||||
|
||||
## Generate SSH Key
|
||||
```bash
|
||||
ssh-keygen
|
||||
```
|
||||
|
||||
Press Enter for defaults.
|
||||
|
||||
This creates:
|
||||
- private key → ~/.ssh/id_rsa
|
||||
- public key → ~/.ssh/id_rsa.pub
|
||||
|
||||
---
|
||||
|
||||
## Copy SSH Key to Server
|
||||
```bash
|
||||
ssh-copy-id user@server_ip
|
||||
```
|
||||
|
||||
Or manually copy:
|
||||
```bash
|
||||
cat ~/.ssh/id_rsa.pub
|
||||
```
|
||||
|
||||
Paste into server:
|
||||
```bash
|
||||
~/.ssh/authorized_keys
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Login Using SSH Key
|
||||
```bash
|
||||
ssh user@server_ip
|
||||
```
|
||||
|
||||
(No password needed)
|
||||
|
||||
---
|
||||
|
||||
## SSH Config File (PRO TIP)
|
||||
Create:
|
||||
```bash
|
||||
~/.ssh/config
|
||||
```
|
||||
|
||||
Example:
|
||||
```text
|
||||
Host myserver
|
||||
HostName 13.234.56.78
|
||||
User ubuntu
|
||||
IdentityFile ~/.ssh/id_rsa
|
||||
```
|
||||
|
||||
Now connect using:
|
||||
```bash
|
||||
ssh myserver
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Common SSH Commands
|
||||
```bash
|
||||
exit # logout
|
||||
whoami # check user
|
||||
hostname # server name
|
||||
uptime # server running time
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Common SSH Errors
|
||||
- Permission denied
|
||||
- Wrong user
|
||||
- Wrong key
|
||||
- Port blocked by firewall
|
||||
|
||||
---
|
||||
|
||||
## DevOps Best Practices
|
||||
- Disable password login
|
||||
- Use key-based auth only
|
||||
- Never share private key
|
||||
- Use least privilege users
|
||||
|
||||
---
|
||||
|
||||
## Real DevOps Scenario
|
||||
1. Create EC2 instance
|
||||
2. SSH into server
|
||||
3. Install Docker
|
||||
4. Deploy application
|
||||
|
||||
SSH is the entry point.
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
Today I learned SSH basics, key-based authentication,
|
||||
and how DevOps engineers securely connect to remote servers.
|
||||
Loading…
Reference in New Issue
Block a user