## Summary of "Cert Prep: LPI Linux Essentials (010-160)"
https://www.linkedin.com/learning/cert-prep-lpi-linux-essentials-010-160/
### General
- 96% servers use Linux
- Open source: code avialable for public use or modification, distribution under a license.
- Licenses: 45% of github is MIT
- Distribution: kernel + config + libraries + programs
- OS differences: market share pcs (77 windows, 18 macOs, 2 linux)
- Package installs and repositories: each distro has its package manager (.deb, .rpm(red hat, fedora, openSUSE). tar(universal, arch linux))
- Package manager: deb (dpkg, apt-get, apt), rpm (rpm, yum, dnf)
### CLI
- **Shell**: program that takes commands form the keyboard and gives them to the kernel to execute
- **Bash**: type of shell (there are alternatives like zsh)
- **Terminal**: Gui window to access to shell
- \\ : scapes chars. echo "I have \\$1200"
- **FHS**: Filesystem Hierarchy Standard defines the directory structure and directory contents in Linux distributions. It is maintained by the Linux Foundation.
{{https://i.imgur.com/02VycVd.png?1200}}
- Character names:
- / : lash
- \- : dash
- ~ : tilde
- Commands: ls, pwd, mv, rm, mkdir, touch, locale, hostname, date, uptime, df
{{https://linoxide.com/guide/linux-cheat-sheet.png?300}}
- ls -l(permission, ownership, size)a(show hidden)
- wildcard: characters of regexp: ? * []
- ls -la b[ao][wl]??.txt
- Hard Link vs Symbolic Link
- hardlink: duplicate directory entry where both entries point to the same file
- symbolic link: a file that refers to another file by name. ln -s originame linkname
{{https://miro.medium.com/max/1174/1*HSizugGgBK8-VrDfvp3Ujw.jpeg?500}}
### Piping
[https://linuxhint.com/linux_pipe_command/](https://linuxhint.com/linux_pipe_command/)
[https://ryanstutorials.net/linuxtutorial/piping.php](https://ryanstutorials.net/linuxtutorial/piping.php)
[https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_07](https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_07)
Every single program in the UNIX/Linux system has 3 built-in data streams.
- STDIN (0): Standard input
- STDOUT (1): Standard output
- STDERR (2): Standard error
pipe redirection (|): send data from a program to another.
file redirection (>): sends or gets data to/from a file
- | : stdout to stdin
- |& (shorthand for 2>&1): stderr and stdout to stdin
- \> : redirects to a file, overwrittes it
- \2> : redirects errors to a file, overwrittes it
- \&> : redirects errors to a file, overwrittes it
- \>> : redirects to a file, appends content
- \< : redirects from a file
```linux
user@bash: wc -l < myoutput
8
```
- <>:
```
user@bash: wc -l < barry.txt > myoutput
user@bash: cat myoutput
7
```
- 2> : redirects errors
```
user@bash: ls -l video.mpg blah.foo 2> errors.txt
```
- 2>&1: errors redirected to the stdouput (&1)
redirect errors to stdout and then redirect everyting to a file.
When Bash sees several redirections it processes them from left to right.
```
ls asdf.txt > myoutput 2>&1
```
the 2>&1 output goes to myoutput
https://stackoverflow.com/a/40319372/1034806
-`command > output` is just a shortcut for `command 1> output`
### Scripts
```
#! (is a script) /... (program executed)
#!/bin/bash
```
```bash
#!/bin/bash
# variables:
# $ip=....
# conditional expressions
# if [ -s filename ]
filename=$1
if [ -f "$filename" ]; then
echo "File exists"
else
echo "File does not exist"
fi
```
execute it:
```cli
./asdfasdf.sh
```
### Processes
[https://www.tecmint.com/linux-process-management/](https://www.tecmint.com/linux-process-management/)
- **Foreground processes** (interactive processes) – these are initialized and controlled through a terminal session.
- **Background processes** (non-interactive/automatic processes) – are processes not connected to a terminal; they don’t expect any user input.
- **Daemons**: A program that runs as a "background" process (without a terminal or user interface), commonly waiting for events to occur and offering services.
- **The Init Process** (/sbin/init): The parent of all processes on the system, it’s the first program that is executed when the Linux system boots up.
- pid (process id), ppid (parent pid), ps, top (interactive updating view of ps), free (check free ram)
- Kernel ring buffer (/var/log/dmesg) : is stored on memory (dmesg). A ring buffer is a special kind of buffer that is always a constant size, removing the oldest messages when new messages come in.
### Networking
- DNS (Domain Name System) (Internet phonebook)
- DHCP (Dynamic Host Configuration Protocol): Is a network management protocol used on Internet Protocol networks whereby a DHCP server dynamically assigns an IP address and other network configuration parameters to each device on a network so they can communicate with other IP networks.
- Ehernet: Is a family of computer networking technologies commonly used in local area networks (LAN), metropolitan (MAN), wide (WAN).
- Hostname: The name the computer gets
- Netmask (Subnet mask): Divide the net on subnets. The masks determines all the subnet parameters.
- Gateway: A gateway is a network node that serves as an access point to another network. A default gateway is the node in a computer network using the internet protocol suite that serves as the forwarding host (router) to other networks when no other route specification matches the destination IP address of a packet
- TCP/IP : set of standards that underlie most modern network connections at the sw level
- ip address ⇒ netmask ⇒ ip address(router) ⇒ ip address (dns server)
{{https://www.homenethowto.com/wp-content/uploads/dns-via-home-router2.jpg?500}}
Programs
- traceroute (track problems in connection)
- test dns: host, dig, nslookup
- netstat
### Security
1. shut down servers
2. enable a firewall
3. use good passwords
4. keep sw up to date
### User accounts and groups
/etc/passwd
whoami
id
adduser
useradd
usermod and groupmod to manage users and groups
who: who is logged in the system
var/log/auth.log : all info about users
### Ownerships and permissions
permissions for user, group and others
chown
chgrp
umask
sticky bit
suid
sgid