Globally fixed grammar mistakes.

pull/1/head
Vladimir Protsenko 2 years ago
parent 80a7fc3a19
commit 13de24386e

@ -29,7 +29,7 @@
отмеченные словом "пропустите" не должны находится. В заданиях на замены отмеченные словом "пропустите" не должны находится. В заданиях на замены
результатом должны быть новая строка. результатом должны быть новая строка.
Попробуйте написать шаблон, который соответствует всем трем строкам, это может Попробуйте написать шаблон, который соответствует всем трём строкам, это может
быть так же просто, как общие буквы в каждой строке. быть так же просто, как общие буквы в каждой строке.
Упражнение 1. Сопоставление символов Упражнение 1. Сопоставление символов
@ -83,7 +83,7 @@
нужно использовать экранирующий символ - обратный слеш. нужно использовать экранирующий символ - обратный слеш.
Ниже приведена пара строк с разными символами, но одинаковой длины. Попробуйте Ниже приведена пара строк с разными символами, но одинаковой длины. Попробуйте
написать один шаблон, который может соответствовать первым трем строкам, но не написать один шаблон, который может соответствовать первым трём строкам, но не
последней. последней.
Упражнение 2. Сопоставление с подстановочными знаками Упражнение 2. Сопоставление с подстановочными знаками
@ -192,7 +192,7 @@
До сих пор мы узнали, как указать диапазон символов, которые мы хотим До сих пор мы узнали, как указать диапазон символов, которые мы хотим
сопоставить, но как насчет количества повторений символов, которые мы хотим сопоставить, но как насчет количества повторений символов, которые мы хотим
сопоставить? Один из способов сделать это — явно указать, сколько именно сопоставить? Один из способов сделать это — явно указать, сколько именно
символов мы хотим, например. \\d\\d\\d, который будет соответствовать ровно трем символов мы хотим, например. \\d\\d\\d, который будет соответствовать ровно трём
цифрам. цифрам.
Более удобный способ — указать, сколько повторений каждого символа мы хотим, Более удобный способ — указать, сколько повторений каждого символа мы хотим,

@ -1,7 +1,7 @@
# Задание 1 # Задание 1
0. Если у вас есть машина с графической оболочкой, в консоли перейдите в уровень запуска multi-user.target без перезагрузкпи, а затем обратно graphical.target. 0. Если у вас есть машина с графической оболочкой, в консоли перейдите в уровень запуска multi-user.target без перезагрузки, а затем обратно graphical.target.
``` ```
# systemctl isolate multi-user.target # systemctl isolate multi-user.target
# systemctl isolate graphical.target # systemctl isolate graphical.target

@ -2,7 +2,7 @@
### Задание 1. Команды ### Задание 1. Команды
0. Если у вас есть машина с графической оболочкой, в консоли перейдите в уровень запуска multi-user.target без перезагрузкпи, а затем обратно graphical.target. 0. Если у вас есть машина с графической оболочкой, в консоли перейдите в уровень запуска multi-user.target без перезагрузки, а затем обратно graphical.target.
1. Если у вас есть машина с графической оболочкой, перейдите в уровень запуска multi-user.target с перезагрузкой, а затем переключитесь в графическую оболочку обратно. 1. Если у вас есть машина с графической оболочкой, перейдите в уровень запуска multi-user.target с перезагрузкой, а затем переключитесь в графическую оболочку обратно.
2. Выведите модуль, который активируется по-умолчанию. 2. Выведите модуль, который активируется по-умолчанию.
3. Выведите возможные состояния модулей командой systemctl --state=help. 3. Выведите возможные состояния модулей командой systemctl --state=help.

@ -33,7 +33,7 @@ gpg --output un_encrypted.data --decrypt encrypted.data
### 5. ### 5.
Используйте `ssh-copy-id имя-удаленной-машины`, чтобы скопировать ваш ssh-ключ на сервер. Перед установкой попробуйте команду Используйте `ssh-copy-id имя-удаленной-машины`, чтобы скопировать ваш ssh-ключ на сервер. Перед установкой попробуйте команду
в тестовом режиме с ключём `-n`. в тестовом режиме с ключом `-n`.
### 6. ### 6.
Отредактируйте `.ssh/config` на локальной машине, чтобы запись выглядела следующим образом Отредактируйте `.ssh/config` на локальной машине, чтобы запись выглядела следующим образом
@ -78,7 +78,7 @@ decrypt(шифрованные данные: массив байт, ключ) ->
### Асимметричная криптография ### Асимметричная криптография
``` ```
keygen() -> (открытый ключ, закрытый ключ) (функция рандомизирована) keygen() -> (открытый ключ, закрытый ключ) (функция основана на генерации случайных чисел)
encrypt(данные, открытый ключ) -> шифрованные данные encrypt(данные, открытый ключ) -> шифрованные данные
decrypt(шифрованные данные, закрытый ключ) -> данные decrypt(шифрованные данные, закрытый ключ) -> данные

@ -7,7 +7,7 @@ $ sudo useradd mike --shell /bin/bash
$ sudo su - mike $ sudo su - mike
su: warning: cannot change directory to /home/mike: No such file or directory su: warning: cannot change directory to /home/mike: No such file or directory
``` ```
Зайти под пользователем mike теперь можно. Без домашней директории не будет сохраняться история комманд, а также нельзя настроить Зайти под пользователем mike теперь можно. Без домашней директории не будет сохраняться история команд, а также нельзя настроить
оболочку. Например, активировать пользовательские псевдонимы при входе. оболочку. Например, активировать пользовательские псевдонимы при входе.
``` ```
$ sudo mkdir /home/mike $ sudo mkdir /home/mike

@ -168,7 +168,7 @@ total 16
``` ```
### 9. ### 9.
В каталоге `/projects` cоздайте файл `test` в папках `1`, `2`, `3`. Поменяйте для папок атрибуты доступа для категории `other`: `r--`, `r-x`, `--x` соответственно. Зайдите под другого пользователя, который входит в категорию `other` и попробуйте найти файл с помощью `find`, начиная с каталога `/projects`. Попробуйте найти слово в содержимом файлов. Как влияют атрибуты на возможность поиска? В каталоге `/projects` создайте файл `test` в папках `1`, `2`, `3`. Поменяйте для папок атрибуты доступа для категории `other`: `r--`, `r-x`, `--x` соответственно. Зайдите под другого пользователя, который входит в категорию `other` и попробуйте найти файл с помощью `find`, начиная с каталога `/projects`. Попробуйте найти слово в содержимом файлов. Как влияют атрибуты на возможность поиска?
``` ```
stud@stud15:/projects$ mkdir 1 stud@stud15:/projects$ mkdir 1
stud@stud15:/projects$ mkdir 2 stud@stud15:/projects$ mkdir 2

@ -16,7 +16,7 @@
Проверьте может ли mike удалить папку с чужим проектом? Может ли он удалить свою папку? Уберите stickybit у папки /projects. А теперь может ли mike удалить папку, созданную vera или stud? Влияет ли на возможность удаления наличие в папке файлов? Проверьте может ли mike удалить папку с чужим проектом? Может ли он удалить свою папку? Уберите stickybit у папки /projects. А теперь может ли mike удалить папку, созданную vera или stud? Влияет ли на возможность удаления наличие в папке файлов?
### 6. ### 6.
От root cоздайте ещё одну общую директорию shared в /home/. Создайте группу shared_files c большим значением идентификатора, например 70000, в которую входят mike, vera и stud. Поменяйте владельца /home/shared на nobody, а владельца-группу на shared_files. Установите полные права доступа для владельца и группы владельца. Все остальным запретите доступ к папке. Также установите бит SGID. От root создайте ещё одну общую директорию shared в /home/. Создайте группу shared_files c большим значением идентификатора, например 70000, в которую входят mike, vera и stud. Поменяйте владельца /home/shared на nobody, а владельца-группу на shared_files. Установите полные права доступа для владельца и группы владельца. Все остальным запретите доступ к папке. Также установите бит SGID.
Создайте несколько файлов под разными аккаунтами в этой папке и проверьте, что они имеют владельца-группу shared_files. Создайте несколько файлов под разными аккаунтами в этой папке и проверьте, что они имеют владельца-группу shared_files.
@ -32,7 +32,7 @@ touch /tmp/root_$RANDOM
Сделайте его исполняемым для всех. Вызовите скрипт от пользователя stud. Обратите внимание на владельца созданного файла /tmp/root_*. Как на него повлиял SUID? Установите SUID на gen_file_root.sh, сгенерируйте новый файл. Есть ли изменения в поле владельца? Сделайте его исполняемым для всех. Вызовите скрипт от пользователя stud. Обратите внимание на владельца созданного файла /tmp/root_*. Как на него повлиял SUID? Установите SUID на gen_file_root.sh, сгенерируйте новый файл. Есть ли изменения в поле владельца?
### 9. ### 9.
В каталоге /projects cоздайте файл test в папках 1, 2, 3. Поменяйте для папок атрибуты доступа для категории other: r--, r-x, --x соответственно. Зайдите под другого пользователя, который входит в категорию other и попробуйте найти файл с помощью find, начиная с каталога /projects. Попробуйте найти слово в содержимом файлов. Как влияют атрибуты на возможность поиска? В каталоге /projects создайте файл test в папках 1, 2, 3. Поменяйте для папок атрибуты доступа для категории other: r--, r-x, --x соответственно. Зайдите под другого пользователя, который входит в категорию other и попробуйте найти файл с помощью find, начиная с каталога /projects. Попробуйте найти слово в содержимом файлов. Как влияют атрибуты на возможность поиска?
# Справка # Справка

@ -174,7 +174,7 @@ $ tree /etc/nginx/
Проверьте, что в конфигурационных файлах указаны абсолютные пути. Проверьте, что в конфигурационных файлах указаны абсолютные пути.
Проверьте порты прослушивания. Проброшеные порты с 193.32.63.170+X на 10.160.179.10+X: 22, 80, 443. Проверьте порты прослушивания. Проброшенные порты с 193.32.63.170+X на 10.160.179.10+X: 22, 80, 443.
Проверьте, конфигурации на предмет синтаксических ошибок. Завершения строк `;`. Помочь сделать проверку может команда `nginx -t`. Проверьте, конфигурации на предмет синтаксических ошибок. Завершения строк `;`. Помочь сделать проверку может команда `nginx -t`.

@ -76,7 +76,7 @@
### Подготовка к занятию "Поиск и устранение неисправностей" ### Подготовка к занятию "Поиск и устранение неисправностей"
Данные вирутальные Данные виртуальные
Создайте N vlan без доступа в интернет: bond0.N+X и мост vmbrN+X с параметрами: Создайте N vlan без доступа в интернет: bond0.N+X и мост vmbrN+X с параметрами:
- Bridge ports: bond0.N+X, - Bridge ports: bond0.N+X,
@ -137,7 +137,7 @@ ip link set address "$(gateway_mac)" dev ens18
Активируйте следующий сервис: Активируйте следующий сервис:
```bash ```bash
# /etc/systemd/system/netowrk-problem.service # /etc/systemd/system/network-problem.service
[Unit] [Unit]
After=network.target After=network.target
@ -146,7 +146,7 @@ Type=oneshot
ExecStart=/sbin/task5.sh ExecStart=/sbin/task5.sh
[Install] [Install]
WantedBy=nulti-user.target WantedBy=multi-user.target
``` ```
#### 6. #### 6.
@ -162,6 +162,6 @@ chmod 777 /home/stud/.ssh
- 1 сокет с 4 ядрами, - 1 сокет с 4 ядрами,
- 8 Гб оперативной памяти, - 8 Гб оперативной памяти,
- 6 Гб дискового пространства, - 6 Гб дискового пространства,
- сетевой интрфейс vmbr499. - сетевой интерфейс vmbr499.
Подключите cdrom с образом debian-11.4.0-amd64-netinst.iso. Подключите cdrom с образом debian-11.4.0-amd64-netinst.iso.

@ -1,4 +1,4 @@
# Процесс загруски системы # Процесс загрузки системы
Когда компьютер включается, первое программное обеспечение, которое запускается, — это загрузчик. Это фрагмент кода, единственной целью которого является загрузка ядра операционной системы и передача ему управления. Ядро загрузит необходимые драйверы, инициализирует аппаратное обеспечение, а затем загрузит остальную часть операционной системы. Когда компьютер включается, первое программное обеспечение, которое запускается, — это загрузчик. Это фрагмент кода, единственной целью которого является загрузка ядра операционной системы и передача ему управления. Ядро загрузит необходимые драйверы, инициализирует аппаратное обеспечение, а затем загрузит остальную часть операционной системы.

@ -13,7 +13,7 @@
### 1.1 RAID 0 ### 1.1 RAID 0
#### 1.1.1 #### 1.1.1
Зайдите в терминал. Изучите документацию `mdadm`: `man mdadm` и `mdadm --help`. Cоздайте программный raid массив типа 0 (чередование записи разбитого на блоки потока данных) на основе первых 2 созданных дисков по 0.1ГБ. Используйте сырые диски, например `/dev/sdc /dev/sdd`. Зайдите в терминал. Изучите документацию `mdadm`: `man mdadm` и `mdadm --help`. Создайте программный raid массив типа 0 (чередование записи разбитого на блоки потока данных) на основе первых 2 созданных дисков по 0.1ГБ. Используйте сырые диски, например `/dev/sdc /dev/sdd`.
#### 1.1.2 #### 1.1.2
Изучите документацию `mkfs.ext4`. Отформатируйте raid `/dev/md0` командой `mkfs.ext4` с опцией указания метки `-L raid0`. Изучите документацию `mkfs.ext4`. Отформатируйте raid `/dev/md0` командой `mkfs.ext4` с опцией указания метки `-L raid0`.

@ -113,7 +113,7 @@ sudo apt install nginx keepalived
Отредактируйте приветственную страницу по-умолчанию `/var/www/html/index.nginx-debian.html`, добавив номер сервера и проверьте, что сайт доступен по локальному адресу стандартному порту 80. Отредактируйте приветственную страницу по-умолчанию `/var/www/html/index.nginx-debian.html`, добавив номер сервера и проверьте, что сайт доступен по локальному адресу стандартному порту 80.
## 2.3 ## 2.3
Настройте keepalived на обоих узлах, используя следующую конфигурацию `/etc/keepalived/keepalived.conf` cогласно схеме приведённой выше. Пример конфигурации для узла `nginx 3`: Настройте keepalived на обоих узлах, используя следующую конфигурацию `/etc/keepalived/keepalived.conf` согласно схеме приведённой выше. Пример конфигурации для узла `nginx 3`:
``` ```
global_defs { global_defs {
vrrp_version 3 vrrp_version 3
@ -141,7 +141,7 @@ vrrp_instance VI1 {
} }
``` ```
Cлужебная информация (vrrp-объявления от keepalived-лидера о том, что узел работоспособен) будет передаваться через сетевой интерфейс ens18 vlanX. Работоспособность узла отслеживается скриптом `chech_nginx`, указанным в блоке `track_script`. Скрипт настраивается в блоке `vrrp_script`, где указывается путь к исполняемому файлу и другие параметры. Keepalived пакет предоставляет документацию man для конфигурационного файла - `man keepalived`. Служебная информация (vrrp-объявления от keepalived-лидера о том, что узел работоспособен) будет передаваться через сетевой интерфейс ens18 vlanX. Работоспособность узла отслеживается скриптом `chech_nginx`, указанным в блоке `track_script`. Скрипт настраивается в блоке `vrrp_script`, где указывается путь к исполняемому файлу и другие параметры. Keepalived пакет предоставляет документацию man для конфигурационного файла - `man keepalived`.
Поменяйте параметр `state` на `BACKUP` и уменьшите параметр `priority` для резервного узла, поменяйте адрес `mcast_src_ip`, используемый для передачи служебной информации. Поменяйте параметр `state` на `BACKUP` и уменьшите параметр `priority` для резервного узла, поменяйте адрес `mcast_src_ip`, используемый для передачи служебной информации.

@ -147,7 +147,7 @@ FROM employees e
INNER JOIN departments d ON (e.department_id = d.department_id); INNER JOIN departments d ON (e.department_id = d.department_id);
``` ```
Обратите внимание, как мы обращаемся к `employee_id`, `first_name`, `last_name` из таблицы `employees` и к `department_name` из таблицы `departments`. Мы связыаем эти два множества информации в часи `FROM`. Обратите внимание, что `INNER JOIN` и `ON` зарезервированные слова. В примеры выше мы хотим получить пересечение элементов таблицы `employees` и `departments` по полю `department_id`. Обратите внимание, как мы обращаемся к `employee_id`, `first_name`, `last_name` из таблицы `employees` и к `department_name` из таблицы `departments`. Мы связываем эти два множества информации в части `FROM`. Обратите внимание, что `INNER JOIN` и `ON` зарезервированные слова. В примеры выше мы хотим получить пересечение элементов таблицы `employees` и `departments` по полю `department_id`.
Мы обратились к СУБД на специальном языке и СУБД взяла на себя самую сложную часть, избавив нас от необходимости писать специализированную программу для поиска и выгрузки информации. Мы обратились к СУБД на специальном языке и СУБД взяла на себя самую сложную часть, избавив нас от необходимости писать специализированную программу для поиска и выгрузки информации.
@ -214,7 +214,7 @@ FROM departments d
Результат нам сообщают, что в городе Effingham штата Индиана США нет отдела. Значит офис был закрыт. Результат нам сообщают, что в городе Effingham штата Индиана США нет отдела. Значит офис был закрыт.
### 4.4 Cоединения на себя (self join) ### 4.4 Соединения на себя (self join)
Соединение на себя - вид соединения, хотя и не имеет специального синтаксиса, стоит упомянуть отдельно. Такой способ соединения полезен, когда таблица содержит иерархические данные. В нашем примере это таблица `employees`. Соединение на себя - вид соединения, хотя и не имеет специального синтаксиса, стоит упомянуть отдельно. Такой способ соединения полезен, когда таблица содержит иерархические данные. В нашем примере это таблица `employees`.
@ -259,13 +259,13 @@ FROM employees e LEFT OUTER JOIN employees m ON (e.manager_id = m.employee_id);
С механизмом транзакций количество шагов уменьшается в 2 раза: С механизмом транзакций количество шагов уменьшается в 2 раза:
1. Создать пользователя 1. Создать пользователя
2. Создать аккаунт 2. Создать аккаунт
3. Соединить аккаунт и ползьзователя 3. Соединить аккаунт и пользователя
Транзакции позволяют не писать логику возврата в предыдущее состояние, до начала транзакции. Транзакции позволяют не писать логику возврата в предыдущее состояние, до начала транзакции.
### 5.1 Простейшие транзакции ### 5.1 Простейшие транзакции
Самая простая транзакия состоит из одного запроса на модификацию данны, заключенного между `BEGIN` и `COMMIT`. Самая простая транзакция состоит из одного запроса на модификацию данны, заключенного между `BEGIN` и `COMMIT`.
```sql ```sql
BEGIN; BEGIN;
INSERT INTO employees (first_name, last_name, start_date, salary, job_title, manager_id, department_id) INSERT INTO employees (first_name, last_name, start_date, salary, job_title, manager_id, department_id)

@ -4,7 +4,7 @@
Виртуальные машины эмулируют аппаратное обеспечение на котором выполняется гостевая операционная система с целевым приложением. Виртуальные машины отлично подходят для изоляции приложения. Но за такую изоляцию приходится платить большими накладными расходами на создание виртуальной среды. Виртуальные машины эмулируют аппаратное обеспечение на котором выполняется гостевая операционная система с целевым приложением. Виртуальные машины отлично подходят для изоляции приложения. Но за такую изоляцию приходится платить большими накладными расходами на создание виртуальной среды.
Контейнеры вместо эмуляции аппаратного обеспечения эмулирует операционную систему, делая контейнеры более легковесными. Ключом для этого типа эмуляции является правильное согласование таких механизмов Linux, как: контрольные группу (cgroups), пространсва имён (kernel namespaces), union-capable файловых систем, netfilter. В отличие от виртуальных машин, контейнеры не создают больших накладных расходов, что позволяет использовать систему и ресурсы эффективнее. Контейнеры вместо эмуляции аппаратного обеспечения эмулирует операционную систему, делая контейнеры более легковесными. Ключом для этого типа эмуляции является правильное согласование таких механизмов Linux, как: контрольные группу (cgroups), пространства имён (kernel namespaces), union-capable файловых систем, netfilter. В отличие от виртуальных машин, контейнеры не создают больших накладных расходов, что позволяет использовать систему и ресурсы эффективнее.
Контейнер представляет собой изолированную группу процессов, которые ограничены частной корневой файловой системой и пространством имён процессов. Содержащиеся процессы совместно используют ядро и другие службы хост-системы, но по умолчанию они не могут получить доступ к файлам или системным ресурсам за пределами своего контейнера. Контейнер представляет собой изолированную группу процессов, которые ограничены частной корневой файловой системой и пространством имён процессов. Содержащиеся процессы совместно используют ядро и другие службы хост-системы, но по умолчанию они не могут получить доступ к файлам или системным ресурсам за пределами своего контейнера.
@ -22,9 +22,9 @@ Docker это самый известный инструмент, который
#### 1.1. Пространства имён #### 1.1. Пространства имён
Пространства имён изолируют контейнерные процессы с точки зрения нескольких функций операционной системы, включая монтирование файловой системы, ууправление процессами и сетевое взаимодействие. Пространства имён изолируют контейнерные процессы с точки зрения нескольких функций операционной системы, включая монтирование файловой системы, управление процессами и сетевое взаимодействие.
Например, пространство имён команды `mount` отображает процессы с помощью индивидуального представления иерарзии файловой системы. Это аналогично системному вызову `chroot`, который необратимо устанавливает видимый процессу корневой каталог и тем самым отключает доступ к файлам и каталогам хоста, расположенным выше уровня `chroot`. Например, пространство имён команды `mount` отображает процессы с помощью индивидуального представления иерархии файловой системы. Это аналогично системному вызову `chroot`, который необратимо устанавливает видимый процессу корневой каталог и тем самым отключает доступ к файлам и каталогам хоста, расположенным выше уровня `chroot`.
Контейнеры могут работать на разных уровнях интеграции с операционной системой хоста в зависимости от того, как эти пространства имён были настроены. Контейнеры могут работать на разных уровнях интеграции с операционной системой хоста в зависимости от того, как эти пространства имён были настроены.

@ -24,7 +24,7 @@ sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
``` ```
Проверте, всё ли установлено корректно: Проверьте, всё ли установлено корректно:
``` ```
$ sudo docker run hello-world $ sudo docker run hello-world

Loading…
Cancel
Save