diff --git a/admin/lab1.md b/admin/lab1.md new file mode 100644 index 0000000..1b7278d --- /dev/null +++ b/admin/lab1.md @@ -0,0 +1,76 @@ +Task 1 +Работа в консольке +1. Переместиться между директориями: +cd /name/name1 - перемещение по полному пути +cd name_dir - переместиться в папку в текущей директории +cd .. - переместиться на уровень выше +cd ~ - переместиться в домашнюю директорию +cd - вернуться в пердыдущую директорию + +2. Вывести список файлов в директории: +ls +ls -l - детальный список с правами, датами + +3. Вывести список всех файлов в директории: +ls -a - показать все файлы, вкдючая скрытые + +4. Создать папку с подпапками: +mkdir -p dir1/dir2/dir3 + +5. Внутри папки создать файлик и записать в него что-нибудь: +echo "Hello, world" > dir3/main.txt + +6. Переместить файл из одной директории в другую: +mv home/admin/dir1/dir2/dir3/main.txt /home/admin/ + +7. скопировать файл из одной директории в другую: +cp dir3/main.txt /home/admin/ + +8. переименовать файл: +mv dir3/main.txt dir3/renamed.txt + +9. сравнить содержимое файла: +diff dir3/renamed.txt /home/admin/main.txt + +10. отсортировать содержимое файла по возрастанию и убыванию: +sort dir1/dir2/dir3/renamed.txt - по возрастанию +sort -r dir1/dir2/dir3/remaned.txt - по убыванию + +11. удалить все папки и файлы: +– rm -rf dir1 + +Task 2 +Перенаправляем +1. Как работают команды >,>>? +- > — создает файл или перезаписывает существующий +Например: echo "First line" > main.txt - файл main.txt содержит строку "First line" + +- >> — создает файл или добавляет в конец существующего +Например: echo "Second line" >> main.txt - файл содержит две строки + +2. Что такое перенаправление ввода? stderr,stdout; +- stdout - стандартный поток вывода, по умолчанию терминал +- stderr - стардартный потом ошибок, по умолчсанию терминал + +3. Вывести содержание файла не используя текстовые редакторы; +- cat main.txt + +4. Создать файл с содержимым не используя текстовые редактор; +- echo "Third line" > main.txt + +5. перенаправить stdout в stderr и обратно на примере команды kinit, ping, tracert +kinit user 2> errors.txt # Перенаправляем stderr в файл +ping example.com > output.txt 2>&1 # Перенаправляем stdout и stderr в один файл (output.txt) + +6. чем отличаются stdout и stderr +- stdout используется для обычного вывода программы (результаты выполнения) +- stderr используется для вывода сообщений об ошибках и предупреждениях + +7. что такое stdin? +stdin - стандартный поток ввода, по умолчанию клавиатура + +8. как отправить весь вывод команды в пустоту? +- команда > /dev/null + +9. можно ли отправить одновременно stdin и stdout в пустоту? +Да, можно. Для этого нужно перенаправить поток вывода в файл /dev/null \ No newline at end of file diff --git a/admin/lab2.md b/admin/lab2.md new file mode 100644 index 0000000..2464b4a --- /dev/null +++ b/admin/lab2.md @@ -0,0 +1,56 @@ +Task 1 +Управление пользователями +1. Добавьте пользователей user1 и user2: +1.1) user1 - оболочка bash: +sudo useradd -m -s /bin/bash user1 (-m - создание домашней директории для пользователя, -s /bin/bash: для user1 будет использована оболочка bash) + +1.2) user2 - оболочка sh: +sudo useradd -m -s /bin/sh user2 + +1.3) установите им пароли: +(1.1)sudo passwd user1; +(1.2)sudo passwd user2 + +2. Назначьте пользователю 1 группу администраторов, пользователя 2 добавьте в группу пользователя 1 +2.1) sudo usermod -aG sudo user1 (добавляем пользователя 1 в группу администраторов) + +2.2) sudo usermod -aG user1 user2 (добавляем пользователя 2 в группу пользователя 1) + +3. Что такое права доступа? Выведите права доступа на файлы в директории пользователя +Чтение (r) – возможность просматривать содержимое файла или список файлов в директории +Запись (w) – возможность изменять файл или добавлять файлы в директорию +Исполнение (x) – возможность исполнять файл или заходить в директорию +ls -l – для вывода прав доступа на файлы в текущей директории + +4. Как изменить права на файлы? Создайте файл который будет на который у всех пользователей будут все возможные права +chmod 777 /home/user1/main.txt + +5. Как называется учётная запись встроенного администратора в linux? +root - суперпользователь с полными правами в системе + +6. Как выполнить команду от имени администратора? +sudo + +7. Есть ли ограничения у суперпользователя? +Суперпользователь root обладает максимальными правами и доступом к системе. Но у root существуют ограничения на уровне системы, например, запреты на операции, которые могут привести к поломке системы. + +8. Удалите пользователя 2 с помощью пользователя 1: +sudo -u user1 sudo userdel -r user2 + +9. Как можно изменить владельца папки? измените владельца папки из пункта 4. – sudo chown user2:user2 /home/user1/test_all_access.txt + +Task 2 +Запрещаем +1. Запретите пользователю user1 из предыдщуего задания выполнять вход в систему +sudo usermod -L -s /sbin/nologin user1 - блокируем пароль и меняем оболочку на noLogin + +2. Как вы это сделали? +Можно сделать поэтапно: +sudo usermod -L user1 - блокировка пароля +sudo usermod -s /sbin/nologin user1 - меняем оболочку на noLogin + +3. Какие ещё способы это сделать вы знаете? +sudo chage -E 0 user1 - истечение срока пароля + +4. Можно ли создать пользователей с одинаковыми username? +Нет, так как username должен быть уникальным diff --git a/admin/lab3.md b/admin/lab3.md new file mode 100644 index 0000000..82c1c5e --- /dev/null +++ b/admin/lab3.md @@ -0,0 +1,191 @@ +Task 1 +ФС +1. Какие файловые системы вы знаете? +Windows: NTFS, FAT12, FAT16, FAT32, eXFAT, ReFS +Linux: ext2, ext3, ext4, JFS, XFS, ReiserFS, Btrfs, ZFS +macOS: HFS+, APFS + +2. Как можно классифиировать файловые системы? в чём отличия?? +По назначению: +Для носителей с произвольным доступом (NTFS, FAT32, ext2) +Для носителей с последовательным доступом (QIC) +Для оптических носителей(ISO9660, UDF, HFS) +Виртуальные ФС (AEFS) +Для флэш-памяти (YAFFS, exFAT) +VMware VMFS - кластерная ФС для хранения других ФС + +По структуре: +Журналируемые (ext4, XFS, NTFS) - ведется журнал, хранящий список изменений +Нежурналируемые (ext2, FAT32) - без журнала + +3. Какие файловые системы используются в linux? +ext2, ext3, ext4, JFS, XFS, ReiserFS, Btrfs, ZFS + +4. Как можно создать файловую систему на диске? +su - +mkfs -t ext4 /dev/sdb1 - создание ФС на разделе /dev/sdb1 + +5. Как можно подключить диск в систему, что такое монтирование? +Монтирование - процесс подключения файловой системы к определенной точке в дереве каталогов +su - +mount /dev/sdb1 /mnt/mydisk + +6. файловая система procfs, cifs, tmpfs, sysfs. В чём особенности каждой из них? Вывести каталоги к которым примонтированы эти файловые системы. +procfs, cifs, tmpfs, sysfs относятся к специальным файловым системам. +procfs(/proc) - все процессы хранятся в виде файлов +tmpfs(/tmp) - все процессы хранятся в оперативной памяти +sysfs(/sys) - предоставляет информацию об устройствах, драйверах и ядре +cifs(могут быть разные каталоги) - обмен файлами по сети + +7. Как можно получить информацию о системе используя лишь команду cat? вывести информацию о процессоре и состоянии памяти системы +cat /proc/cpuinfo - полная информация о процессоре +cat /proc/meminfo - полная информация о памяти + +Task 2 +Струтура каталогов +1. Какая структура каталогов в linux? выведите список файлов в корне системы +/ - корневая директория +/bin - основные пользовательские двоичные файлы +/boot - статические загрузочные файлы +/dev - файлы устройства +/etc - файлы конфигурации +/home - домашние папки +/lib - основные общие библиотеки +/lost+found - восстановленные файлы +/media - съемный носитель +/mnt - временные точки монтирования +/opt - дополнительное пакеты +/proc - файлы ядра и процессов +/root - корневой домашний каталог +/run - файлы состояния приложения +/sbin - двоичные файлы системного администрирования +/srv - сервисные файлы +/tmp - временные файлы +/usr - пользовательские двоичные файлы и данные только для чтения +/var - файлы временных данных + +2. Где хранятся папки пользователей в системе? +Папки пользователей в системе хранятся в директории /home + +3. Где домашняя папка суперпользователя? +Домашняя папка суперпользователя находится в каталоге /root + +4. Где хранятся основые конфигурационные файлы в системе? +Основные конфигурационные файлы в системе хранятся в папке /etc + +5. Что за папки /bin,/sbin,usr/bin,/usr/sbin +Папка /bin содержит бинарные файлы пользователя (исполняемые программы). Здесь расположены утилиты, которые можно использовать в однопользовательском режиме или режиме восстановления. Например, это такие общие команды, как cat, ls, tail, ps и другие. + +Папка /sbin содержит системные исполняемые файлы. Как и в случае с /bin, здесь есть исполняемые файлы, доступные на ранних этапах загрузки. Но в отличие от /bin, в этой папке находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Примеры: iptables, reboot, fdisk, ifconfig, swapon и другие. + +Папка /usr/bin содержит исполняемые файлы различных программ, которые не нужны на первых этапах загрузки системы. К примеру, это музыкальные плееры, графические редакторы, браузеры и так далее. + +Папка /usr/sbin содержит бинарные файлы программ, предназначенных для системного администрирования. Такие программы нужно выполнять с правами суперпользователя. Примеры: Gparted, sshd, useradd, userdel и другие + +Task 3 +Продолжаем +1. Выведите содержимое fstab. Что хранится в fstab? +cat /etc/fstab +В файле fstab (File System Table) хранится информация о различных файловых системах и устройствах хранения информации в операционной системе. Это текстовый файл, который определяет, как диск (раздел) будет использоваться или как будет интегрирован в систему. + +2. Добавьте в виртуальную машину ещё один диск +Настройки VM -> Носители -> Контроллер SATA -> Добавить жесткий диск -> Создать новый + +3. Узнайте как ситема видит ваш диск - выведите информацию о блочных устройствах +lsblk + +4. С помощью полученной информации создайте на диске таблицу разделов и фаловую систему ext4 +su - +fdisk /dev/sdb +# n → p → 1 → Enter → Enter → w +mkfs.ext4 /dev/sdb1 + +5. Примонитруте диск в каталог /mnt +su - +mkdir /mnt/mydisk +mount /dev/sdb1 /mnt/mydisk + +6. Зайдите в каталог и создайте там файлы +su - +cd /mnt/mydisk +touch file1.txt file2.txt +echo "test" > file1.txt + +7. Отмонтируйте диск и проверье остались ли файлы +su - +cd / +umount /mnt/mydisk +ls /mnt/mydisk/ # Файлов не видно + +8. Сделайте так чтобы диск автоматически подключался при загрузке систем (добавьте информацию о нём с fstab) +su - +blkid /dev/sdb1 # Копируем UUID +nano /etc/fstab +# Открывается файл, идем в последнюю строку и записываем: +UUID="d768371c-0333-4b95-8e4a-48db2f0bcb2b" /mnt/ext4 defaults 0 2 + +9. Проверьте корретность записанных в fstab данных перед перезагрузкой +mount -a +su - +ls /mnt/mydisk/ # Файлы снова видны + +10. Перезагрущите систему и убедитесь что диск был подключён к системе +su - +reboot +# После перезагрузки: +ls /mnt/mydisk/ # Файлы должны быть на месте + +Task 4 +Продолжаем +1. Raid массивы, что такое и какие бывают +RAID (Redundant Array of Independent Disks) - технология объединения дисков. +Основные типы: +RAID 0 (Stripping): +Преимущества: Максимальная скорость (данные разбиваются на блоки) +Недостатки: Нет избыточности, отказ одного диска = потеря всех данных +Минимально дисков: 2 +RAID 1 (Mirroring): +Преимущества: Высокая надежность (данные дублируются) +Недостатки: Эффективный объем = объему одного диска +Минимально дисков: 2 +RAID 10: +Преимущества: Высокая скорость + надежность +Недостатки: Требует минимум 4 диска +Особенности: Комбинация RAID 1 и RAID 0 + +2. Добавьте в виртуальную машину 2 диска отформатируйте их в ext4 +mkfs.ext4 /dev/sdb +mkfs.ext4 /dev/sdc + +3. Создайте из них raid 0 массив +mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc + +4. Проверье всё ли работает +cat /proc/mdstat + +5. Удалите raid0 и создайте raid1 +mdadm --stop /dev/md0 +mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb /dev/sdc + +6. В чём между ними разница? +По надежности: +RAID 0 абсолютно ненадежен - вышел из строя один диск, и все данные потеряны. +RAID 1 очень надежен - система переживает отказ одного диска без потери данных. + +По эффективности использования дискового пространства: +В RAID 0 вы получаете 100% доступного пространства от суммы всех дисков. +В RAID 1 вы получаете только 50% (при двух дисках) - половина уходит на дублирование. + +По производительности: +RAID 0 быстрее для операций чтения и записи, так как нагрузка распределяется. +RAID 1 быстрее только для операций чтения, а запись может быть медленнее. + +7. Есть ли файловые системы которые поддерживают raid массивы без стороненго ПО? +Да, есть. Файловые системы Btrfs и ZFS имеют встроенную поддержку RAID на уровне самой файловой системы. + +BtrFS интегрирует программный RAID в свой состав. Поддерживает различные типы RAID-массиво. + +ZFS реализует собственный вариант RAID — RAID-Z. Данные и контрольные суммы распределяются по нескольким дискам внутри одного виртуального устройства (Vdev). Позволяет сохранять данные даже при выходе из строя одного, двух или трёх дисков, в зависимости от выбранного уровня. + +8. Можно ли создать raid массив во время установки системы? +Да, создать RAID-массив можно во время установки системы Linux с помощью утилиты mdadm (Multiple Device Administration). Это позволяет объединить несколько дисков в логический элемент, что повышает надёжность (кроме RAID 0) и увеличивает производительность. \ No newline at end of file diff --git a/admin/lab4.md b/admin/lab4.md new file mode 100644 index 0000000..6e69d14 --- /dev/null +++ b/admin/lab4.md @@ -0,0 +1,79 @@ +Task 1 +Скриптуем по полной +1. Что такое шебанг? +Шебанг - последовательность из символов решётки и восклицательного знака ("#!") в начале файла скрипта. Указывает системе, каким интерпретатором выполнять файл. + +2. Обязательно ли исполняемый файл дожен иметь соотвествующее расширение? +Нет, не обязательно.сВ Linux расширения файлов не определяют их исполняемость. Важны бит исполнения, шебанг, права доступа. + +3. Напишите скрипт который выполнит автоматически действия из блока работы с файлами. ( не забудьте включить set -euo pipefail для того что бы ваш скрипт было удобнее отлаживать. Опишите что включают эти флаги) +#!/bin/bash + +# Безопасные настройки скрипта +set -euo pipefail + +# Описание флагов: +# set -e - остановка скрипта при любой ошибке +# set -u - ошибка при использовании необъявленных переменных +# set -o pipefail - возвращает код ошибки пайплайна, если хоть одна команда пайпа упала + +# Создание рабочей директории +WORK_DIR="/tmp/file_operations_$(date +%s)" +mkdir -p "$WORK_DIR" +cd "$WORK_DIR" + +# 1. Папка с подпапками +mkdir -p project/{src,doc,bin,backup} + +# 2. Внутри папки создаем файл и записываем в него данные +echo "Hello, World!" > project/src/main.txt +echo "Тестовые данные" > project/doc/readme.txt + +# 3. Проверяем созданные файлы +ls -la project/src/ +ls -la project/doc/ + +# 4. Перемещаем файл из одной директории в другую +mv project/src/main.txt project/backup/ + +# 5. Копируем файл из одной директории в другую +cp project/doc/readme.txt project/bin/readme_copy.txt + +# 6. Переименовываем файл +mv project/bin/readme_copy.txt project/bin/renamed_file.txt + +# 7. Создаем файлы для сравнения +echo "File A content" > file_a.txt +echo "File B content" > file_b.txt +echo "File A content" > file_c.txt + +# 8. Сравниваем содержимое файлов +echo "Сравнение file_a.txt и file_b.txt:" +if diff file_a.txt file_b.txt; then + echo "Файлы идентичны" +else + echo "Файлы различаются" +fi + +# 9. Создаем файл для сортировки +echo -e "banana\napple\ncherry\napple\norange" > fruits.txt + +# 10. Сортируем содержимое файла по возрастанию и убыванию +echo "По возрастанию:" +sort fruits.txt > sorted_asc.txt +cat sorted_asc.txt + +echo "По убыванию:" +sort -r fruits.txt > sorted_desc.txt +cat sorted_desc.txt + +# 11. Создаем файл со всеми возможными правами +echo "Файл с полными правами" > all_access.txt +chmod 777 all_access.txt +ls -la all_access.txt + +# 12. Показываем итоговую структуру +find . -type f -exec ls -la {} \; | head -20 + +# 13. Очистка +rm -rf "$WORK_DIR" diff --git a/admin/lab5.md b/admin/lab5.md new file mode 100644 index 0000000..78d04dc --- /dev/null +++ b/admin/lab5.md @@ -0,0 +1,180 @@ +Task 1 +Юниты +1. Что такое systemd юнит? +Systemd юнит - это конфигурационный файл, который описывает как systemd должен управлять службой, сокетом, устройством, точкой монтирования и другими системными объектами. + +Основные типы юнитов: +service - системные службы +socket - сокеты для активации по требованию +timer - планировщик задач (замена cron) +mount - точки монтирования +target - группы юнитов (аналог runlevels) + +2. Проверье статус любого systemd юнита, какую информацию выводит эта команда? +su - +systemctl status sshd + +Эта команда показывает статус службы SSH демона (sshd): +Состояние "active (running)" +PID процесса +Время работы +Последние записи в логах + +3. ПОпробуйте оставновить сервис. +systemctl stop sshd + +Проверяем: +systemctl status sshd + +4. Перезапустите его. +systemctl restart sshd + +5. УДалите из автозагрузки +systemctl disable sshd + +6. Верните обратно +systemctl enable sshd + +7. Что такое таймеры? +Таймеры - это systemd юниты для планирования выполнения задач (аналог cron). Они могут запускать service юниты по расписанию. + +Task 2 +Пишем юниты +1. Создайте скрипт который создаёт папку заполняет её файлами ( имена 1-4 ) и записывает в них информацию о текущей дате, версии ядра, имени компьютера и списе всех файлов в домашнем каталоге пользователя от которого выполняется скрипт( не забудьте сдлеать проверку на существование файлов и папок) +su - + +mkdir -p /usr/local/bin +nano /usr/local/bin/system_info_collector.sh +# Зписываем в открывшийся файла: +#!/bin/bash +set -euo pipefail + +# Всегда переходим в домашнюю директорию пользователя +cd ~ + +# Проверяем и создаем папку +if [ ! -d "system_info_data" ]; then + mkdir -p system_info_data + echo "Создана папка system_info_data" +else + echo "Папка system_info_data уже существует" +fi + +# Создаем 4 файла с информацией +for i in 1 2 3 4; do + file_path="system_info_data/file$i.txt" + if [ -f "$file_path" ]; then + echo "Файл $file_path уже существует, перезаписываем" + fi + + cat > "$file_path" << EOF +Дата: $(date) +Ядро: $(uname -r) +Компьютер: $(hostname) +Пользователь: $(whoami) + +Домашняя папка: +$(ls -la ~) +EOF + echo "Создан файл $file_path" +done + +echo "Скрипт выполнен успешно" + +# Делаем скрипт исполняемым +chmod +x /usr/local/bin/system_info_collector.sh + +2. Создайте юнит, который будет вызывать этот скрипт при запуске. Проверьте +su - +nano /etc/systemd/system/system-info.service + +# Записываем +[Unit] +Description=System Info Collector + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/system_info_collector.sh +User=root + +[Install] +WantedBy=multi-user.target + +# Тестируем +systemctl daemon-reload +systemctl start system-info.service +systemctl status system-info.service + +3. Создайте таймер который будет вызывать выполнение одноимённого systemd юнита каждые 5 минут. +su - +nano /etc/systemd/system/system-info.timer + +# Записываем +[Unit] +Description=Run every 5 minutes + +[Timer] +OnBootSec=1min +OnUnitActiveSec=5min + +[Install] +WantedBy=timers.target + +4. От какого пользователя вызыаются юниты по умолчанию? +По умолчанию от root'а + +5. Создайте пользователя, от имени которого будет выполняться ваш скрипт. +su - +useradd -m systemuser + +6. Дополните юнит информацией о пользователе, от которого должен выполняться скрипт. +su - +nano /etc/systemd/system/system-info.service + +# Обновляем +[Unit] +Description=System Info Collector + +[Service] +Type=oneshot +ExecStart=/usr/local/bin/system_info_collector.sh +User=systemuser + +[Install] +WantedBy=multi-user.target + +# Обновляем +systemctl daemon-reload +chown systemuser:systemuser /usr/local/bin/system_info_collector.sh + +7. Дополните ваш скрипт так, чтобы он независимо от местоположения всегда выполнялся в домашней папке того, кто его вызывает. +cd ~ # Выполняется из домашней директории. +... + +Task 3 +Журнальчики +1. Посмотретите журналы ssh +su - +journalctl -u sshd + +2. Выведите журналы в реальном времени +journalctl -f + +3. Выведите лог в реальном времени для службы sshd +journalctl -u sshd -f + +4. Можно ли без комады journalctl прочитать логи systemd? +Да, можно несколькими способами: +su - +# 1. Через системные файлы +cat /var/log/syslog | grep ssh +# 2. Через службу rsyslog +cat /var/log/auth.log | grep ssh +# 3. Через демона службы (если ведет собственный лог) +cat /var/log/ssh/* +# 4. Просмотр бинарных журналов напрямую +strings /var/log/journal/*/system.journal | grep ssh + +5. Сколько будет 2-2? +echo $((2 - 2)) +# Результат: 0 \ No newline at end of file diff --git a/admin/lab7.md b/admin/lab7.md new file mode 100644 index 0000000..4b537f4 --- /dev/null +++ b/admin/lab7.md @@ -0,0 +1,124 @@ +Task 1 +Настриваем +1. Какой по умолчанию используется порт для поключения? +su - +grep Port /etc/ssh/sshd_config +# По умолчанию: 22 + +2. Можно ли его изменить? если да то как? +# Редактируем конфиг +nano /etc/ssh/sshd_config +# Находим строку #Port 22 и меняем на: +Port 2222 +# Сохраняем и перезапускаем службу +systemctl restart sshd + +3. Какая служба отвечает за обработку запросов на подключения по ssh? +systemctl status sshd +# Имя службы: sshd (Secure Shell Daemon) + +4. Какой файл конфигурации отвечает за его настройку? +/etc/ssh/sshd_config + +5. Попробуйте подключиться по ssh к предоставленному вам серверу +ssh student@ternar.io -p 215 + +6. Отредактируйте файл настроек на сервере так, чтобы была возможность подключиться к серверу используя пользователя root +sudo vi /etc/openssh/sshd_config + +# Меняем: +#PermitRootLogin without-rassword +# на +PermitRootLogin yes +#^q! + +sudo systemctl restart sshd +7. Измените колличество ошибок ввода пароля перед сборосом соединения, покажите эти измененения +sudo nano /etc/openssh/sshd_config + +# УБираем комментарий и меняем: +MaxAuthTries 3 + +sudo grep MaxAuthTries /etc/openssh/sshd_config +sudo sudosystemctl restart sshd + +8. Создайте пользователя ssh-user и попробуйте им подключиться к серверу +sudo useradd -m ssh-user +sudo passwd ssh-user + +9. Ограничте ему возможность подключения к серверу +sudo vi /etc/openssh/sshd_config +# Добавляем в конец файла +DenyUsers ssh-user + +sudo systemctl restart sshd +10. Как вы это сделали? +Описано выше + +11. Что хранится в файле known_hosts? +# Просмотр содержимого +cat ~/.ssh/known_hosts +# В файле known_hosts хранятся отпечатки SSH-ключей серверов для проверки их подлинности. + +Task 2 +Конфижим для удобства +1. Где хранятся пользвательские и системные настройки подключения? +# Системные настройки (для всех пользователей) +ls -la /etc/openssh/ssh_config + +# Пользовательские настройки +ls -la ~/.ssh/config + +2. Что за файл options? +Основной файл конфигурации SSH-клиента для пользовательских настроек подключения. + +3. Отредактируйте файл options так, чтобы можно было подключаться не вводя имя пользвателя и порт +mkdir -p ~/.ssh +cat > ~/.ssh/config << 'EOF' +Host my-server + HostName ternar.io + User student + Port 215 +EOF + +# Проверка +cat ~/.ssh/config + +4. Назовите подключение удобным для вас спсобом +my-server + +5. Проверьте работоспособность +ssh my-server + +Task 3 +Ключики +1. Что такое ssh ключи и зачем они нужны? +SSH ключи - это пара криптографических ключей (приватный и публичный) +Назначение: безопасная аутентификация без ввода пароля +Приватный ключ хранится у клиента, публичный - на сервере + +2. Как их создать? +ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" + +# Проверка +ls -la ~/.ssh/id_ed25519* + +3. Создайт пару публичный/приватный ключ ed_25519, где они хранятся? +~/.ssh/id_ed25519 - приватный ключ +~/.ssh/id_ed25519.pub - публичный ключ + +4. Скопируйте публичный ключ на ваш сервер, в каком файле он будет храниться? +ssh-copy-id -i ~/.ssh/id_ed25519 my-server +# Публичный ключ хранится в файле ~/.ssh/authorized_keys + +5. Попробуйте подключиться к серверу, у вас запросили пароль? +ssh -i ~/.ssh/id_ed25519 my-server +# Пароль не запросился + +6. Запретите подключение с паролем для всех пользователей, оставьте только с помощью ключа. +sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/openssh/sshd_config +sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/openssh/sshd_config +sudo systemctl restart sshd + +# Проверка +sudo grep PasswordAuthentication /etc/openssh/sshd_config \ No newline at end of file diff --git a/admin/lab8.md b/admin/lab8.md new file mode 100644 index 0000000..6587daf --- /dev/null +++ b/admin/lab8.md @@ -0,0 +1,125 @@ +Шарим +1. Установите пакет samba +su - +apt-get update +apt-get install samba + +2. ЧТо такое общая папка, зачем оно может быть нужно? +Общая папка - это директория, доступная по сети для других пользователей/компьютеров +Используется для: +- Обмена файлами между компьютерами +- Совместной работы над проектами +- Резервного копирования +- Доступа к файлам с разных устройств + +3. Создайте общую папку без пароля с правами только на чтение файлов +su - +mkdir -p /samba/public +chmod 755 /samba/public +echo "test file" > /samba/public/readme.txt +nano /etc/samba/smb.conf + +Добавляем в конец файла: +[public] + path = /samba/public + browseable = yes + read only = yes + guest ok = yes + +systemctl restart smb + +4. Создайте общую папку с паролем с правами на чтение и запись +mkdir -p /samba/private +chmod 777 /samba/private +useradd -M sambauser +smbpasswd -a sambauser +nano /etc/samba/smb.conf + +Добавляем в конец файла: +[private] + path = /samba/private + browseable = yes + read only = no + guest ok = no + valid users = sambauser + +systemctl restart smb + +5. Создайте общую папку с доступом для какой-то группы с полными правами +groupadd smbgroup +mkdir -p /samba/group +chgrp smbgroup /samba/group +chmod 770 /samba/group +useradd -G smbgroup user1 +smbpasswd -a user1 +nano /etc/samba/smb.conf + +Добавляем в конец файла: +[group] + path = /samba/group + browseable = yes + read only = no + guest ok = no + valid users = @smbgroup + write list = @smbgroup + +systemctl restart smb + +6. Создайте общую папку в которой у одной группы будет полный доступ, а у другой только доступ на чтение. Третья группа не должна иметь к ней доступа +groupadd fullaccess +groupadd readonly +groupadd noaccess +mkdir -p /samba/mixed +chgrp fullaccess /samba/mixed +chmod 775 /samba/mixed +useradd -G fullaccess user2 +useradd -G readonly user3 +useradd -G noaccess user4 +smbpasswd -a user2 +smbpasswd -a user3 +smbpasswd -a user4 +nano /etc/samba/smb.conf + +[mixed] + path = /samba/mixed + browseable = yes + read only = no + guest ok = no + valid users = @fullaccess, @readonly + write list = @fullaccess + read list = @readonly + invalid users = @noaccess + +systemctl restart smb + +# Дополняю секцию global ! + map to guest = bad user + guest account = nobody + +Разрешаю анонимный гостевой доступ к общей папке public без ввода пароля + +Проверяем, что все работает: +smbclient //localhost/public -N + +Вывод: Try "help" to get a list of possible commands. +smb: \> help +? allinfo altname archive backup +blocksize cancel case_sensitive cd chmod +chown close del deltree dir +du echo exit get getfacl +geteas hardlink help history iosize +lcd link lock lowercase ls +l mask md mget mkdir +mkfifo more mput newer notify +open posix posix_encrypt posix_open posix_mkdir +posix_rmdir posix_unlink posix_whoami print prompt +put pwd q queue quit +readlink rd recurse reget rename +reput rm rmdir showacls setea +setmode scopy stat symlink tar +tarmode timeout translate unlock volume +vuid wdel logon listconnect showconnect +tcon tdis tid utimes logoff +.. ! +smb: \> pwd +Current directory is \\localhost\public\ \ No newline at end of file diff --git a/admin/network.md b/admin/network.md new file mode 100644 index 0000000..d6d6205 --- /dev/null +++ b/admin/network.md @@ -0,0 +1,64 @@ +сети +1. Выведите список интерфейсов, какими способами можно это сделать? +ip link show +ip addr show +ifconfig +netstat -i + +2. Попробуйте изменить ip адрес +sudo ip addr add 192.168.1.100/24 dev eth0 + +3. Попробуте добавить несколько ip адресов на сетевую карту +sudo ip addr add 192.168.1.101/24 dev eth0 +sudo ip addr add 192.168.1.102/24 dev eth0 + +4. Выведите список маршрутов +ip route show +route -n + +5. Выведите arp таблицу +arp -a +ip neighbor show + +6. Что такое ip адрес? +IP-адрес - это уникальный числовой идентификатор устройства в компьютерной сети, использующей протокол IP. + +7. Для чего нужны маршруты? +Маршруты определяют путь, по которому сетевые пакеты должны следовать от источника к получателю в межсетевом пространстве. + +8. Что за протокол arp? +ARP (Address Resolution Protocol) - протокол для определения MAC-адреса по известному IP-адресу в локальной сети. + +9. Что такое dhcp? +DHCP (Dynamic Host Configuration Protocol) — сетевой протокол, который автоматически назначает IP-адреса и другие сетевые параметры устройствам в сети. + +10. Что такое dns? +DNS (Domain Name System) — система доменных имён. Она преобразует понятные человеку имена сайтов в цифровые IP-адреса, необходимые компьютерам для соединения в сети. Это позволяет пользователям вводить запоминающиеся имена вместо сложных числовых адресов. + +11. Как называется один из протоколов синхронизации времени? +NTP (Network Time Protocol) — один из протоколов синхронизации времени. + +12. Что такое широковещательный запрос, зачем он нужен? +Широковещательный звпрос - это запрос, который предназначен для получения всеми компьютерами сети. Для этого запрос посылается на специальный IP или MAC-адрес + +13. Какой адресс является широковещательным? +Широковещательный адрес в IP-сетях — это специальный адрес, который используется для отправки сообщений всем устройствам в сети. +Пример: если адрес подсети равен 192.168.0.0, маска подсети — 255.255.255.0, то широковещательный адрес — 192.168.0.255 + +14. Какие ещё параметры можно задать сетевой карте? +MTU (Maximum Transmission Unit) - максимальный размер пакета. Определяет максимальный размер данных в одном сетевом пакете +sudo ip link set eth0 mtu 1500 + +Включение/выключение интерфейса. Активирует или деактивирует сетевую карту. Аналогично физическому подключению/отключению кабеля. +sudo ip link set eth0 up +sudo ip link set eth0 down + +Изменение MAC-адреса. MAC-адрес - это уникальный физический идентификатор сетевого устройства. Можно временно изменить. +sudo ip link set eth0 address 00:11:22:33:44:55 + +Просмотр текущих настроек. Первая команда показывает основные параметры, вторая - детальную информацию о сетевой карте. +ip link show eth0 +ethtool eth0 + +15. Что такое маска подсети? зачем она нужна? +Маска подсети определяет, какая часть IP-адреса относится к сети, а какая - к хосту. Нужна для разделения сети на подсети и маршрутизации.