reorganize homeworks structure for parts 1-3

This commit is contained in:
2022-04-06 10:22:40 +07:00
parent e8c9ed8597
commit 2f7fd3bee7
30 changed files with 156 additions and 160 deletions

View File

@@ -2,21 +2,19 @@
## Homeworks
Пометки расположены в [notes.md](/src/homework/notes.md).
* [1.1 Введение в DevOps](/src/homework/1.1)
* [2.1 Системы контроля версий](/src/homework/2.1)
* [2.2 Основы Git](/src/homework/2.2)
* [2.3 Ветвления в Git](/src/homework/2.3)
* [2.4 Ветвления в Git](/src/homework/2.4)
* [3.1 Работа в терминале, лекция 1](/src/homework/3.1)
* [3.2 Работа в терминале, лекция 2](/src/homework/3.2)
* [3.3. Операционные системы, лекция 1](/src/homework/3.3)
* [3.4. Операционные системы, лекция 2](/src/homework/3.4)
* [3.5. Файловые системы](/src/homework/3.5)
* [3.6. Компьютерные сети, лекция 1](/src/homework/3.6)
* [3.7. Компьютерные сети, лекция 2](/src/homework/3.7)
* [3.8. Компьютерные сети, лекция 3](/src/homework/3.8)
* [3.9. Элементы безопасности информационных систем](/src/homework/3.9)
* [1.1 Введение в DevOps](/src/homework/01-intro/1.1)
* [2.1 Системы контроля версий](/src/homework/02-git/2.1)
* [2.2 Основы Git](/src/homework/02-git/2.2)
* [2.3 Ветвления в Git](/src/homework/02-git/2.3)
* [2.4 Ветвления в Git](/src/homework/02-git/2.4)
* [3.1 Работа в терминале, лекция 1](/src/homework/03-sysadmin/3.1)
* [3.2 Работа в терминале, лекция 2](/src/homework/03-sysadmin/3.2)
* [3.3. Операционные системы, лекция 1](/src/homework/03-sysadmin/3.3)
* [3.4. Операционные системы, лекция 2](/src/homework/03-sysadmin/3.4)
* [3.5. Файловые системы](/src/homework/03-sysadmin/3.5)
* [3.6. Компьютерные сети, лекция 1](/src/homework/03-sysadmin/3.6)
* [3.7. Компьютерные сети, лекция 2](/src/homework/03-sysadmin/3.7)
* [3.8. Компьютерные сети, лекция 3](/src/homework/03-sysadmin/3.8)
* [3.9. Элементы безопасности информационных систем](/src/homework/03-sysadmin/3.9)
* [4.1. Командная оболочка Bash: Практические навыки](/src/homework/4.1)
* [4.2. Использование Python для решения типовых DevOps задач](/src/homework/4,2)

View File

Before

Width:  |  Height:  |  Size: 243 KiB

After

Width:  |  Height:  |  Size: 243 KiB

View File

@@ -0,0 +1,17 @@
# Git
## Git new commands
В git постепенно появляются алиасы, чтобы команды становились узконаправленными. Новые полезные команды:
1. [`git restore`](https://git-scm.com/docs/git-restore) - восстановление файлов в рабочей директории (например, откат изменений как при использовании `git checkout -- .`)
2. [`git switch`](https://git-scm.com/docs/git-switch) - переключение веток. Более узконаправленная команда, чем `git checkout` или `git branch`.
## Git rebase
Примерный порядок действий перебазирования веток в `main`:
1. `git switch new-branch`
2. `git rebase main`
3. _optional_ исправление конфликтов, выполнение команды `git rebase --continue`
4. `git checkout main`
5. `git merge new-branch`
6. `git branch -D new-branch`

View File

@@ -48,7 +48,7 @@
5. Что делает конструкция `[[ -d /tmp ]]`
Возвращает 0, если `/tmp` существует и это директория, или 1, в ином случае.
Скрипт, проверяющий данный ответ находится в файле [double_square_braket.sh](./double_square_braket.sh).
Скрипт, проверяющий данный ответ находится в файле [double_square_braket.sh](double_square_braket.sh).
4. Добейтесь в выводе type -a bash в виртуальной машине наличия первым пунктом в списке.

View File

@@ -40,7 +40,7 @@ Set-Cookie: prov=a65f8cdf-ae94-33aa-2d32-b4ba53feba61; domain=.stackoverflow.com
Наиболее долгих по загрузке запрос - это запрос на загрузку самой страницы после редиректа (`https://stackoverflow.com/`).
Скриншот консоли браузера:
![stackoverflow.png](./stackoverflow.png)
![stackoverflow.png](stackoverflow.png)
3. Какой IP адрес у вас в интернете?

View File

Before

Width:  |  Height:  |  Size: 349 KiB

After

Width:  |  Height:  |  Size: 349 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -118,9 +118,9 @@ UNCONN 0 0
В качестве сети взята стандартная домашняя сеть с wi-fi-роутером.
Файл [network.xml](./network.xml) для открытия в [diagrams.net](https://diagrams.net).
Файл [network.xml](network.xml) для открытия в [diagrams.net](https://diagrams.net).
![network.png](./network.png)
![network.png](network.png)
6. Установите Nginx, настройте в режиме балансировщика TCP или UDP.

View File

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 135 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -15,7 +15,7 @@
3. Установите apache2, сгенерируйте самоподписанный сертификат, настройте тестовый сайт для работы по HTTPS.
Вместо `apache2` будем производить настройку уже установленного в виртуальную машину `nginx` (установка производилась в [дз 3.8:6](/src/homework/3.8/readme.md#Q/A)).
Вместо `apache2` будем производить настройку уже установленного в виртуальную машину `nginx` (установка производилась в [дз 3.8:6](/src/homework/03-sysadmin/3.8sysadmin/3.8/readme.md#Q/A)).
Первым шагом необходимо сгенерировать сертификат:
@@ -265,4 +265,4 @@ scp -P 2222 vagrant@127.0.0.1:/home/vagrant/dump.pcap ./dump.pcap
Затем запустим графическое отображение утилиты и откроем в ней файл:
![wireshark](./wireshark.png)
![wireshark](wireshark.png)

View File

Before

Width:  |  Height:  |  Size: 493 KiB

After

Width:  |  Height:  |  Size: 493 KiB

View File

@@ -0,0 +1,119 @@
# Linux operating system
## Streams
Базовые потоки:
* `0` - stdin (`/proc/<pid>/fd/0`)
* `1` - stdout (`/proc/<pid>/fd/1`)
* `2` - stderr (`/proc/<pid>/fd/2`)
Для перенаправления потока можно использовать `X>&Y`, где `X` поток, который нужно перенаправить,
`Y` - поток, в который нужно направить данные (может быть стандартным файлом).
## Kernel
Версия ядра: `uname -r`.
Версия дистрибутива: `cat /etc/issue` (debian-based), `cat /etc/redhat-release` (centos-based).
Посмотреть всю конфигурацию системы: `sysctl -a`.
Логи системы: `dmesg`, `syslog`.
## Systemctl
* `systemctl list-units --all`
* `systemctl status <service>`
* `systemctl cat <service>` - просмотреть файл настроек сервиса
* `systemctl list-dependencies <service>`
```shell
systemctl list-dependencies docker
docker.service
● ├─containerd.service
● ├─docker.socket
● ├─system.slice
● ├─network-online.target
● │ └─NetworkManager-wait-online.service
● └─sysinit.target
● ├─apparmor.service
<...>
```
* `journalctl -f`
* `journalctl -f -u docker`
## Filesystems
* `stat <file>`
### File types
* regular file (`ls -la` - `-`)
* directory (`ls -la` - `d`)
* hardlink (`ls -la` - `l`)
1 файл - 1 hardlink
1 директрория - минимум 2 hardlink (у пустой директории - 2, +1 за каждую директорию внутри)
* symlink (`ls -la` - `l`)
* pipe (`ls -la` - `p`)
Перенаправление потоков, только однонаправленный
`mkfifo <pipe>`
* socket (`ls -la` - `s`)
Двунаправленный поток, производительнее, чем pipe. Используется для взаимодействия между процессами.
### File access
`chown`, `chmod`, `umask`
Права по умолчанию:
* `file`: `666 - umask`
* `dir`: `777 - umask`
Дополнительные права доступа:
* `sticky` - создание доступно всем, удаление только файлы пользователя
* `setuid`
* `setgid`
`lsattr`/`chattr`
### Raid
`mdadm`
### LVM
`lvs`, `vgs`, `vgdisplay`, `pvdisplay`
### Partitions
`fdisk -l`/`fdisk`, `sfdisk`
### Filesystems
`mkfs`, `mount`, `/etc/fstab`
## Network
* `ping <domain/ip>`
* `whois <ip>`
* `whois -h whois.radb.net <ip>`
* `bgpq3 -J <AS>`
* `traceroute -An <ip>`
* `mtr -zn <ip>`
* `dig +trace @8.8.8.8 <domain>`
* `dig -x <ip>`
* `telnet <domain/ip> <port>`
* `ipcalc <network ip>/<mask>`
### SSH
* `ssh-copy-id user@server` - добавление ssh-ключа на сервер для пользователя
* `ssh-keygen -F server` - проверка ssh-сертификатов сервера
* `ssh-keygen -R server` - удаление записи сервера из `known_hosts`
### Web-servers
* ssl config generation: https://ssl-config.mozilla.org/

View File

@@ -1,141 +1,3 @@
# Git
## Git new commands
В git постепенно появляются алиасы, чтобы команды становились узконаправленными. Новые полезные команды:
1. [`git restore`](https://git-scm.com/docs/git-restore) - восстановление файлов в рабочей директории (например, откат изменений как при использовании `git checkout -- .`)
2. [`git switch`](https://git-scm.com/docs/git-switch) - переключение веток. Более узконаправленная команда, чем `git checkout` или `git branch`.
## Git rebase
Примерный порядок действий перебазирования веток в `main`:
1. `git switch new-branch`
2. `git rebase main`
3. _optional_ исправление конфликтов, выполнение команды `git rebase --continue`
4. `git checkout main`
5. `git merge new-branch`
6. `git branch -D new-branch`
# Linux operating system
## Streams
Базовые потоки:
* `0` - stdin (`/proc/<pid>/fd/0`)
* `1` - stdout (`/proc/<pid>/fd/1`)
* `2` - stderr (`/proc/<pid>/fd/2`)
Для перенаправления потока можно использовать `X>&Y`, где `X` поток, который нужно перенаправить,
`Y` - поток, в который нужно направить данные (может быть стандартным файлом).
## Kernel
Версия ядра: `uname -r`.
Версия дистрибутива: `cat /etc/issue` (debian-based), `cat /etc/redhat-release` (centos-based).
Посмотреть всю конфигурацию системы: `sysctl -a`.
Логи системы: `dmesg`, `syslog`.
## Systemctl
* `systemctl list-units --all`
* `systemctl status <service>`
* `systemctl cat <service>` - просмотреть файл настроек сервиса
* `systemctl list-dependencies <service>`
```shell
systemctl list-dependencies docker
docker.service
● ├─containerd.service
● ├─docker.socket
● ├─system.slice
● ├─network-online.target
● │ └─NetworkManager-wait-online.service
● └─sysinit.target
● ├─apparmor.service
<...>
```
* `journalctl -f`
* `journalctl -f -u docker`
## Filesystems
* `stat <file>`
### File types
* regular file (`ls -la` - `-`)
* directory (`ls -la` - `d`)
* hardlink (`ls -la` - `l`)
1 файл - 1 hardlink
1 директрория - минимум 2 hardlink (у пустой директории - 2, +1 за каждую директорию внутри)
* symlink (`ls -la` - `l`)
* pipe (`ls -la` - `p`)
Перенаправление потоков, только однонаправленный
`mkfifo <pipe>`
* socket (`ls -la` - `s`)
Двунаправленный поток, производительнее, чем pipe. Используется для взаимодействия между процессами.
### File access
`chown`, `chmod`, `umask`
Права по умолчанию:
* `file`: `666 - umask`
* `dir`: `777 - umask`
Дополнительные права доступа:
* `sticky` - создание доступно всем, удаление только файлы пользователя
* `setuid`
* `setgid`
`lsattr`/`chattr`
### Raid
`mdadm`
### LVM
`lvs`, `vgs`, `vgdisplay`, `pvdisplay`
### Partitions
`fdisk -l`/`fdisk`, `sfdisk`
### Filesystems
`mkfs`, `mount`, `/etc/fstab`
## Network
* `ping <domain/ip>`
* `whois <ip>`
* `whois -h whois.radb.net <ip>`
* `bgpq3 -J <AS>`
* `traceroute -An <ip>`
* `mtr -zn <ip>`
* `dig +trace @8.8.8.8 <domain>`
* `dig -x <ip>`
* `telnet <domain/ip> <port>`
* `ipcalc <network ip>/<mask>`
### SSH
* `ssh-copy-id user@server` - добавление ssh-ключа на сервер для пользователя
* `ssh-keygen -F server` - проверка ssh-сертификатов сервера
* `ssh-keygen -R server` - удаление записи сервера из `known_hosts`
### Web-servers
* ssl config generation: https://ssl-config.mozilla.org/
# Script languages
## Bash