- Упражнение №10. Администрирование и обслуживание системы II (услуги, сеть, местоположение)
- Введение в Linux (NSWI177)
- Кожа до тренировки
- Сохранить отчет>
- Соединение и точки подключения ( крепления , точки монтирования )
- Работа с образами дисков ( образы дисков )
- Службы (и демоны) ( службы , демоны )
- Объединенная женщина-демон
- О входе в систему
- Потому что перед тренировкой
- Файловый менеджер
- Архивировать комп
- ПЕ™ипойовнГ дискЕЇ рудЌнД›
- Указание томов
- Петріпойовін образЇ дискаЕЇ
- Восстановление поврежденных дисков
- Программы про зжиЕЎтД›нГ заплнД›ности диска
- Зкумӣнӣ а єправый свазкЕЇ (нечетный)
- PЕ™смДровровинг портЕЇ pЕ™es SSH ( Переадресация порта SSH )
- Реверсный порт вперед
- Диспетчер сети
- ZmД›na IP configurace
- nc (netcat)
- nmap (tГ©Еѕ знëмГЅ яко прозкоумÎм ваЕЎГ сГЕҐ)
- Системный
- СпуЎтДанГ а заставенГ слуЕѕбы
- Поволэнь а закЎзГЎнє слуѕѕбы
- Таблица помощи CUPSu
- Скенов на помощь Сане
- ОпакованГ© споуЕЎтД›нГ Гєлох с Кронем
- СпуЕЎтДанГ под обыДЌейнГЅм уЕѕивателем
- Оценка работ (крайний срок: 1 мая)
- 10/port_forward.txt (25 баллов)
- 10/ip_addr.json (35 баллов)
- 10/fat.txt (40 баллов)
- Полезная информация
- Знание концепции…
- Практические навыки
Упражнение №10. Администрирование и обслуживание системы II (услуги, сеть, местоположение)
Введение в Linux (NSWI177)
Это второе упражнение, предназначенное для решения нескольких административных задач. Он содержит абсолютный минимум, необходимый для управления вашей машиной Linux. Но он также содержит несколько бонусов, которые могут быть полезны в сценариях оболочки.
Большинство описанных здесь вещей требуют собственной установки Linux, потому что им нужен правильный супервизор. Они не будут работать на общих машинах в IMPAKT.
Не забывайте, что чтение перед упражнением является обязательным, и есть тест, который вы должны заполнить перед упражнением.
Кожа до тренировки
Сохранить отчет>
Файлы хранятся в файловой системе ( файловая система ), которая представляет собой структуру, расположенную на так называемом блочном устройстве ( блочное устройство ), которым обычно является диск. . Работа с файловой системой или блочным устройством необходима, когда вы устанавливаете новую систему, восстанавливаете данные со сломанного устройства или просто выясняете, сколько свободного места есть.
Соединение и точки подключения ( крепления , точки монтирования )
Помните, что каждая файловая система (к которой мы хотим получить доступ) доступна через некоторый адрес (сравните это с буквенным доступом в других системах). Если мы хотим получить доступ к диску /dev/sda3 в /home, мы знаем, что /dev/sda3 подключен к home , тогда /home является точкой подключения , /dev/sda3 часто также называется volume ( volume ).
Сеть устройства подключается автоматически при запуске. Это включает в себя / ( koЕ™en , root ), где находится система, а также /home, где находятся пользовательские данные. Обратите внимание, что /dev и /proc (среди прочих) являются специальнымифайловые системы, связанные с этими городами. Таким образом, файл /proc/uptime вообще физически не существует (т. е. вы не найдете на диске ни одного сектора, содержащего его данные).
Файловые системы, смонтированные при запуске, перечислены в /etc/fstab. Иногда вам придется их изменить (особенно на ноутбуке) и этот — созданный установщиком — файл без изменений. Обратите внимание, что он содержит идентификацию тома (т.е. путь к разделу — раздел ), точку монтирования и другие параметры.
При подключении съемного USB-накопителя среда рабочего стола обычно монтирует его автоматически. Также есть возможность подключить его вручную с помощью программы монтирования. Однако программа монтирования должна быть запущена под пользователем root (в этой теме объясняется, почему монтирование диска считается небезопасной операцией). Таким образом, вы можете играть с mount em только на своих установках, где у вас есть действительный супервайзер. Он не будет работать на общих машинах.
Техническое примечание: приведенный выше текст может показаться противоречием, потому что, когда mount запрашивает пароль root, как ваша среда рабочего стола (DE) может монтировать диск, не запрашивая пароль администратора. Ваша DE не будет вызывать mount в это время, а будет использовать другую программу (обычно построенную поверх Udisks или Polkit), которая вместе проверит, что подключенное устройство является реальной флешкой (или чем-то подобным), а пользователь так- называется локальным (то есть чтобы не работало по SSH). Затем эта программа имеет бит set-uid и автоматически аутентифицируется с помощью root (конкретная реализация может отличаться).
Если вы хотите проверить подключение вручную, подключите USB-накопитель и отключите его в графическом интерфейсе (если он был подключен автоматически). Обычно он где-то подключенв подкаталог в /media .
Возможно, ваш USB-накопитель будет доступен как /dev/sdb1 или /dev/sda1 в зависимости от того, какой диск установлен на вашем компьютере (список см. в разделе, посвященном lsblk).
Подключение дисков не ограничивается только физическими. Мы поговорим об образах дисков в следующем разделе, но есть и другие варианты. Есть возможность подключить сетевой диск (например, NFS или AFS, который используется в MFF) или даже создать сетевое блочное устройство и подключить его.
Работа с образами дисков ( образы дисков )
В Linux встроена поддержка работы с образами дисков. То есть с файлами, которые содержат зеркальное отображение реального диска. По сути, вы уже работали с ними, если устанавливали Linux на виртуальную машину или скачивали образ на USB-диск в начале семестра.
Linux позволяет мне монтировать такой образ, как если бы это был физический диск, и даже изменять на нем файлы. Это необходимо для следующих действий:
- Разработка и настройка файловых систем (довольно необычная деятельность)
- Извлеченный файл из образа диска виртуальных машин
- Восстановление файлов с поврежденных дисков (необычно, но не стоит за это платить)
При восстановлении данных с поврежденных дисков обычная процедура заключается в попытке скопировать диск как есть на самом низком возможном уровне (т.е. вы копируете простые байты на диске без какой-либо интерпретации). И только после того, как вы скопировали изображение, попробуйте сохранить данные самостоятельно. Это предотвратит дальнейшее повреждение диска и даст вам достаточно времени для самостоятельного восстановления данных.
Однако во всех случаях для подключения образа диска системе необходимо знать, что она может получить доступ к файлукак и для другого блочного устройства (вспомните /dev/sda1 из примера выше).
Службы (и демоны) ( службы , демоны )
В контексте операционных систем термин сервис ( сервис ) относится к любой программе, которая будет работать в фоновом режиме (также графический интерфейс, стандартный ввод из /dev/null ) и предоставляет некоторые услуги другим программам.
Типичным примером может быть служба печати, которая занимается поиском принтеров и предоставляет конечным приложениям их список (т. е. пользовательским приложениям не нужно самим искать принтеры). Другой пример — веб-сервер: он предоставляет файлы веб-браузерам по протоколу HTTP.
В мире систем Unix эти программы часто называют демонами (вероятно, это намек на греческую мифологию, в которой демон был создан, работая в фоновом режиме); Традиционные названия этих программ заканчиваются на букву д. Например, популярный веб-сервер Apache на самом деле работает как программа httpd, а сервер SSH работает как sshd .
Демоны работают иначе, чем обычные программы. Когда они запускаются, они считывают конфигурацию (обычно из файла в каталоге /etc/), запускают и ждут запросов (представьте, что веб-сервер прослушивает порт 80). Изменение их поведения обычно выполняется путем изменения файла конфигурации и их перезапуска. Поскольку он работает в фоновом режиме, у них нет доступа к интерактивному стандартному вводу, а перезапуск (или завершение работы) выполняется с помощью сигнала.
Поскольку запрос на перезапуск демона довольно распространен (а отправка сигнала стоит дорого, потому что сначала нужно знать PID), существуют также специальные программы, которые с помощью PID найдут и отправят правильный сигнал. Обычно называют себяВы можете найти сценарии и для некоторых демонов файлы daemond (фактический демон) и daemonctl для его версии.
Объединенная женщина-демон
Поскольку все приведенные выше принципы практически одинаковы для всех служб, обычно существует набор сценариев, унифицирующих это поведение. Таким образом, вместо вызова daemonctl дистрибутив предложит вам специальную команду, которую вы можете использовать для управления любой службой. Обычно вы используете что-то вроде этого.
В настоящее время наиболее часто используемое программное обеспечение для этой задачи называется systemctl .
О входе в систему
Содержание услуг, предлагаемых так называемыми журналами . Содержит запись о каждом действии удаления, выполненном демоном.
Например, веб-сервер обычно записывает, какие страницы он обслуживал, а также информацию о клиенте.
Обычно для каждой службы определяют, как она должна подробно регистрироваться. Отладка проблемы в конфигурации требует подробных отчетов, в производственной среде, наоборот, для повышения производительности вы включаете только логирование общих ошибок.
Потому что перед тренировкой
Файл теста находится в папке 10 в этом проекте GitLab.
Скопируйте правильную языковую мутацию в свой проект как 10/before.md (т.е. вам придется переименовать файл).
Вопросы и место для ответов находятся в файле, заполните ответы между **[A1]** и **[/A1]** .
Pipeline before-10 на GitLab проверит, что вы отправили ответы в правильном формате . По понятным причинам нельзя проверить на фактическую правильность .
Перед началом упражнения 10 сдайте тесты.
Файловый менеджер
Поскольку вы уже знакомы с ranger, mc, ls / cd и множеством утилит для модификации файлов, этотраздел будет очень коротким. Это только укрепит ваши знания об архивировании файлов, так как другие утилиты уже были рассмотрены в предыдущих лабораторных работах.
Архивировать комп
Архивирование в системах Linux обычно означает объединение нескольких файлов в один (для упрощения передачи) и сжатие этого файла (для экономии места). Иногда архивированием считается только первый шаг (т. е. слияние).
Хотя эти два действия обычно выполняются вместе, Linux сохраняет различие, поскольку позволяет комбинировать правильные инструменты и форматы для каждой части работы. Обратите внимание, что в других системах, где ZIP-файл является предпочтительным форматом, эти действия объединены в одно.
Наиболее широко используемой программой для архивирования является tar. Первоначально его основной целью было архивирование на ленты, отсюда и название: t ape ar chiver. Он всегда запускается с параметром, указывающим режим работы:
- -c для создания нового архива из существующих файлов, — -x для извлечения файлов из архива, — -t для печати таблицы файлов внутри архива.
Имя архива задается с помощью опции -f; если имя не указано, архив читается из стандартного ввода или записывается в стандартный вывод.
Как обычно, опция -v увеличивает детализацию. Например, tar -cv выводит имена файлов, добавленных в архив, tar -cvv также выводит атрибуты файлов (например, ls -l ). Обычный tar -t печатает только имена файлов, tar -tv печатает также атрибуты файлов. (Все печатается в stderr, так что stdout по-прежнему можно использовать для архива.)
Несжатый архив можно создать следующим образом:
Сжатый архив можно создать, передав вывод tar в gzip: `
Поскольку это происходит очень часто, tar поддерживает ключ -z, который автоматически вызывает gzip, так что вы можетенаписать:
tar имеет дополнительные переключатели для других программ (де)сжатия: bzip2 , xz и т. д. Самое главное, ключ -a выбирает программу (рас)сжатия в соответствии с именем архивного файла.
Если вы хотите сжать один файл, часто используется обычный gzip без tar. Некоторые инструменты или API могут даже прозрачно обрабатывать файлы, сжатые gzip.
Чтобы распаковать архив, вы можете снова передать gzip -d (распаковать) в tar или использовать -z следующим образом:
Обратите внимание, что, как и многие другие программы, связанные с файловой системой, tar заменяет существующие файлы без предупреждения.
Мы рекомендуем установить atool в качестве общей оболочки для tar , gzip , unzip и множества других утилит для упрощения работы с архивами. Например:
Обратите внимание, что по умолчанию atool не перезаписывает существующие файлы (это еще одна очень веская причина для его использования).
Обратите внимание, что рекомендуется всегда архивировать в один каталог. Таким образом, пользователь, распаковывающий ваш архив, не будет разбрасывать ваши файлы по текущему каталогу, а будет аккуратно подготовлен в одном новом каталоге.
Чтобы просмотреть список файлов внутри архива, вы можете выполнить als .
ПЕ™ипойовнГ дискЕЇ рудЌнД›
Ваши данные должны быть видны в /mnt/flash .
Чтобы размонтировать, выполните следующую команду.
Обратите внимание, что запуск монтирования без каких-либо аргументов выводит список активных в данный момент монтирований. Для этого привилегии root не требуются.
Указание томов
До сих пор мы всегда использовали имя блочного устройства (например, /dev/sdb1 ) для указания тома. Хотя это тривиально для небольших систем, это может привести к невероятной путанице в более крупных системах — имена устройств зависят от порядка, в котором система обнаружила диски. Этот порядок может варьироваться между ботинками и еще менее стабилен со съемными ботинками.диски. Вы же не хотите, чтобы случайно подключенный USB-накопитель сделал вашу машину не загружаемой :-).
Более надежный способ — обратиться к блочным устройствам с помощью символических ссылок, названных в честь физического расположения в системе. Например, /dev/disk/by-path/pci-0000:03:00.1-ata-6-part1 относится к разделу 1 диска, подключенного к порту 6 контроллера SATA, который находится как устройство 00.1 на шине PCI 0000: 03 .
В большинстве случаев даже лучше описать раздел по его содержимому. Большинство файловых систем имеют UUID (универсальный уникальный идентификатор, 128-битное число, обычно генерируемое случайным образом) и часто также метку диска (короткое текстовое имя). Вы можете запустить lsblk -f для просмотра UUID и меток всех разделов, а затем вызвать mount с UUID=номер или LABEL=имя вместо имени блочного устройства. Ваш файл /etc/fstab, скорее всего, будет ссылаться на ваши тома одним из следующих способов.
Петріпойовін образЇ дискаЕЇ
Образы дисков можно монтировать почти так же, как и блочные устройства, вам нужно только добавить опцию -o loop для монтирования.
Напоминаем, что для монтирования требуются привилегии sudo, поэтому вам нужно выполнить следующий пример на своей собственной машине, а не на какой-либо из общих.
Чтобы попробовать это, вы можете скачать этот образ FAT и смонтировать его.
В качестве альтернативы вы можете запустить udisksctl loop-setup, чтобы добавить образ диска в качестве съемного диска, который можно будет автоматически подключить к рабочему столу:
Восстановление поврежденных дисков
Основной инструмент Linux для исправления поврежденных томов называется fsck (проверка файловой системы). На самом деле команда fsck представляет собой простую обертку, которая выбирает правильную реализацию в соответствии с типом файловой системы. Для семейства файловых систем Linux ext2/ext3/ext4 реализация называется e2fsck. Может оказаться полезнее вызвать e2fsck напрямую, так как более специализированныйпараметры не проходят через общий fsck .
Как мы уже упоминали, безопаснее работать с копией тома, особенно если вы подозреваете, что том серьезно поврежден. Таким образом, вы не рискуете сломать его еще больше. Это может быть довольно требовательно с точки зрения дискового пространства: в конце концов все сводится к деньгам — стоят ли данные больше, чем покупка дополнительного диска или даже передача их полностью профессиональной компании, специализирующейся на такого рода работе.
В качестве альтернативы вы можете сначала запустить e2fsck -n, который только проверяет наличие ошибок и самостоятельно оценивает их серьезность.
Иногда диск настолько поврежден, что fsck не может его восстановить. (На самом деле с файловыми системами ext такое случается редко — мы были свидетелями успешного восстановления дисков, чьи первые 10 ГБ были полностью перезаписаны. Но в файловых системах DOS/Windows, таких как vfat и ntfs, автоматическое восстановление менее успешно.)
Даже если это произойдет, все равно есть хороший шанс восстановить много файлов. К счастью, если диск был не слишком заполнен, большинство файлов сохранялись непрерывно. Таким образом, мы можем использовать простую программу, сканирующую все изображение на наличие сигнатур распространенных форматов файлов (вспомните, например, как выглядит формат GIF). Конечно, это не восстанавливает имена файлов или иерархию каталогов.
Первая программа, которую мы покажем, это photorec ( sudo dnf install testdisk ). Перед запуском подготовьте пустой каталог для хранения результатов.
Он принимает единственный аргумент: изображение файла для сканирования. Затем он запускает интерактивный режим, в котором вы выбираете, где хранить восстановленные файлы, а также угадываете тип файловой системы (в большинстве случаев это будет FAT или NTFS). Затем он пытается восстановить файлы. Ни больше, ни меньше.
Photorec может восстанавливать множество форматов файлов, включая файлы JPEG, MP3, ZIP.(включая файлы ODT и DOCX) или даже файлы RTF.
Еще один инструмент — recoveryjpeg, предназначенный для восстановления фотографий. В отличие от photorec, recoveryjpeg работает полностью неинтерактивно и предлагает некоторые дополнительные параметры, позволяющие точно настроить процесс восстановления.
recoverjpeg не упакован для Fedora: вы можете попробовать установить его вручную или поиграться только с photorec (надеюсь, он вам никогда не понадобится).
Программы про зжиЕЎтД›нГ заплнД›ности диска
Основной утилитой для проверки свободного места на диске является df (disk free).
В исполнении по умолчанию (выше) используются блоки размером в один килобайт. Для более удобочитаемого вывода запустите его с -BM или -BG (мега и гига) или с -h, чтобы он выбрал наиболее подходящую единицу измерения.
Не путайте df с du, который можно использовать для оценки использования файлового пространства. Как правило, вы запускаете du как du -sh DIR для вывода общего пространства, занимаемого всеми файлами в DIR. Вы можете использовать du -sh
/* для печати сводок для каталогов верхнего уровня в вашем $HOME. Но будьте осторожны, так как сканирование всего может занять довольно много времени.
Кроме того, вы можете заметить, что использование пространства, о котором сообщает du, не равно сумме всех размеров файлов. Это происходит потому, что файлы организованы в блоки, поэтому размеры файлов обычно округляются до кратного размера блока. Кроме того, каталоги также занимают место.
Чтобы увидеть, как вложены тома (разделы) и какие блочные устройства распознаются вашим ядром, вы можете использовать lsblk. На общей машине появится следующее:
Это показывает, что машина имеет диск 480 ГБ, разделенный на три раздела: крошечный /boot для ускорения системы, раздел подкачки 8 ГБ и, наконец, 470 ГБ, оставленный для системных и пользовательских данных. Мы не используем отдельный том для /home .
Вы можете найти множество других выходных форматов всправочная страница.
Зкумӣнӣ а єправый свазкЕЇ (нечетный)
Мы оставим эту тему для более продвинутого курса. Если вы хотите учиться самостоятельно, вы можете начать со следующих утилит:
PЕ™смДровровинг портЕЇ pЕ™es SSH ( Переадресация порта SSH )
Как правило, сервисы, предоставляемые машиной, не должны быть доступны в сети для случайных «исследователей безопасности». Поэтому брандмауэр обычно настраивается для управления доступом к вашему компьютеру из сети.
Если услуга должна предоставляться только локально, еще проще позволить ей прослушивать только петлевое устройство. Таким образом, только локальные пользователи (включая пользователей, подключенных к машине через SSH) смогут получить к ней доступ.
В качестве примера вы обнаружите, что веб-сервер прослушивает порт 8080 linux.ms.mff.cuni.cz. Этот веб-сервер недоступен, когда вы пытаетесь получить к нему доступ как linux.ms.mff.cuni.cz , но локальный доступ (при входе в linux.ms.mff.cuni.cz ) работает.
SSH можно использовать для создания безопасного туннеля, через который подмножество портов перенаправляется на вашу машину. По сути, вы будете подключаться к петлевому устройству на вашем компьютере, а SSH будет перенаправлять это соединение на удаленный сервер и обратно, эффективно делая удаленный порт доступным.
Следующая команда заставит порт 8888 вести себя как порт 8080 на удаленной машине. Часть 127.0.0.1 относится к петле на удаленном сервере (вы также можете написать здесь localhost.)
С помощью -N это соединение можно использовать только для переадресации — используйте Ctrl-C, чтобы разорвать его (без этого вы также войдете в удаленную машину).
Откройте http://localhost:8888 в браузере, чтобы убедиться, что вы видите тот же контент, что и с командой ssh linux.ms.mff.cuni.cz curl http://localhost:8080 выше.
Вы будете частопереадресовать (удаленный) порт N на (локальный) порт N , поэтому очень легко забыть о правильном порядке. Однако порядок параметров -L важен и перестановка номеров (например, 8888:127.0.0.1:8080 вместо 8888:127.0.0.1:8080 ) приведет к переадресации разных портов (обычно вы узнаете о правда, довольно быстро). Но не волнуйтесь, если вы не можете его вспомнить. Вот почему у вас есть справочные страницы, и даже обычные пользователи Linux используют их. Это не то, чего нужно стыдиться или бояться :-).
Реверсный порт вперед
SSH позволяет создать так называемую обратную переадресацию.
Это в основном позволяет вам открыть соединение с удаленного сервера на ваш локальный компьютер. На практике вы можете настроить перенаправление обратного порта со своего рабочего стола, который у вас есть дома, на машину в Ротонде, например, а затем использовать этот обратный порт для подключения с Ротонды обратно к вашему рабочему столу.
Эта функция будет работать, даже если ваша машина находится за NAT, что делает невозможным прямое подключение извне.
Следующая команда устанавливает перенаправление обратного порта таким образом, что подключение к порту 2222 на удаленной машине (по петле, т. е. на 127.0.0.1 или localhost ) будет преобразовано в подключения к порту 22 (ssh) на локальной машине:
При попытке сделать это убедитесь, что ваш демон sshd запущен (см. раздел Systemd ниже для объяснения, почему может потребоваться sudo systemctl start sshd) и используйте порт, отличный от 2222, для предотвращения коллизий.
Чтобы подключиться к вашему рабочему столу через этот порт вперед, вы должны сделать это из лаборатории rotunda через ssh -p 2222 your-desktop-login@localhost, поскольку соединение привязано только к петлевому интерфейсу, а не к фактическому сетевой адаптер, доступный на лабораторных компьютерах. (Вообще-то ssh позволяет привязать портпереадресовывать на общедоступный IP-адрес, но администратор часто отключает эту функцию из соображений безопасности.)
Диспетчер сети
Существует несколько способов настройки сети в Linux. Администраторы серверов часто предпочитают использовать команду bare ip; на настольных компьютерах большинство сегодняшних дистрибутивов используют NetworkManager, поэтому мы покажем его и здесь. Обратите внимание, что страница ArchLinux Wiki о NetworkManager также содержит много информации.
NetworkManager имеет графический интерфейс (вы, вероятно, использовали его апплет, не зная об этом), TUI (который можно запустить с помощью nmtui ) и, наконец, интерфейс командной строки. Здесь мы (по понятным причинам) сосредоточимся на интерфейсе командной строки. Без параметров nmcli будет отображать информацию о текущих соединениях:
Сравните приведенное выше с выводом ip addr. Обратите внимание, что NetworkManager явно указывает маршруты по умолчанию, а также информирует вас о том, что некоторые интерфейсы им не контролируются (здесь lo или vboxnet0 ).
ZmД›na IP configurace
Хотя большинство сетей предлагают DHCP (по крайней мере те, к которым вы будете подключаться со своего рабочего стола), иногда вам нужно настроить IP-адреса вручную.
Типичным случаем является временное подключение двух компьютеров, например, для передачи большого файла по проводному соединению.
Единственное, что вам нужно решить, это какую сеть вы будете создавать. Не используйте тот же, что и ваш домашний маршрутизатор; наш любимый выбор — 192.168.177.0/24 .
Исходя из приведенного выше имени, следующая команда добавляет соединение с именем wired-static-temp на enp0s31f6 :
Часто бывает необходимо установить это соединение с помощью следующей команды:
Выполните ту же процедуру на втором хосте, но используйте другой адрес (например, .202 ). Теперь вы сможете пропинговать другую машину:
Для демонстрации поведения ping присоединение прерывается, вы можете попробовать отключить провод или сделать то же самое в программном обеспечении:
nc (netcat)
Давайте рассмотрим, как создавать сетевые подключения из оболочки. Это необходимо для отладки сетевых служб, но также полезно для использования сети в скриптах.
Швейцарский армейский нож сетевых сценариев называется netcat или nc . (К сожалению, существует несколько реализаций netcat, отличающихся параметрами и возможностями. Мы покажем ncat, который установлен по умолчанию в Fedora. В вашей системе может быть установлен другой.)
Сначала тривиальные вещи: если вы хотите подключиться к заданному порту TCP на удаленной машине, вы можете запустить nc machine port . Это устанавливает соединение и подключает стандартный ввод и стандартный вывод к этому соединению. Таким образом, вы можете взаимодействовать с удаленным сервером.
Netcat часто подключается к другим командам с помощью конвейеров. Давайте напишем простейший HTTP-клиент:
(Мы используем \r\n , так как протокол HTTP требует, чтобы строки заканчивались CR+LF. Заголовок Host: является обязательным, поскольку HTTP поддерживает несколько веб-сайтов, работающих с одной и той же комбинацией IP-адреса и порта.)
Мы видим, что http://www.kernel.org/ перенаправляет нас на https://www.kernel.org/, поэтому мы пытаемся снова использовать HTTPS. К счастью, наша версия netcat умеет работать с протоколом TLS (безопасность транспортного уровня), используемым для шифрования:
Теперь давайте создадим простой сервер. Он будет прослушивать TCP-порт 8888, и когда кто-то подключится к нему, сервер отправит содержимое данного файла на соединение:
Мы можем открыть новую оболочку и попробовать получить файл:
Мы получаем файл, но netcat не завершает работу — он все еще ожидает ввода со стандартного ввода. Нажатие Ctrl-D работает, но проще заставить netcat работать в одномтолько направление:
Хорошо, это работает для передачи одного файла по сети. (Но имейте в виду, что передача не зашифрована, поэтому использовать ее в общедоступной сети нецелесообразно.)
При передаче файла сервер завершает работу. Что, если мы хотим запустить сервер, который может обрабатывать несколько подключений? Здесь перенаправления недостаточно, так как нам нужно прочитать файл несколько раз. Вместо этого мы можем попросить netcat запустить команду оболочки для каждого соединения и подключить соединение к его стандартному вводу и стандартному выводу:
Конечно, это можно использовать для гораздо более интересных вещей, чем отправка файла. Вы можете взять любую программу, взаимодействующую через стандартный ввод и стандартный вывод, и превратить ее в сетевую службу.
nmap (tГ©Еѕ знëмГЅ яко прозкоумÎм ваЕЎГ сГЕҐ)
Внимание : nmap — очень мощный инструмент. К сожалению, даже невинное, но многократное использование может быть легко истолковано как злонамеренное сканирование уязвимых мест, которые могут быть атакованы. Используйте этот инструмент с осторожностью и экспериментируйте в своей домашней сети. Бездумное сканирование университетской сети может на какое-то время вообще запретить вашей машине подключаться.
nmap — это основной инструмент сетевого сканирования. Если вы хотите узнать, какие сетевые службы работают на машине, вы можете попробовать подключиться ко всем ее портам, чтобы проверить, какие из них открыты. Nmap делает это и многое другое.
Попробуйте сначала просканировать петлевое устройство на наличие внутренних служб, работающих на вашем компьютере:
Результат может выглядеть следующим образом (на машине есть сервер печати и прокси-сервер HTTP):
Если вы хотите увидеть больше информации, попробуйте добавить переключатель -A.
И если вы запустите его под root (например, sudo nmap -A localhost ), nmap также может попытаться обнаружить удаленную операционную систему.
По умолчанию nmap сканирует толькопорты, часто используемые сетевыми службами. Вы можете указать другой диапазон с помощью опции -p:
Это указывает nmap сканировать все порты TCP (-p1-65535) на локальном хосте.
Предупреждение Еще раз: не используйте это на машинах университетской сети!
В качестве упражнения, какой веб-сервер используется в нашей GitLab? А какой из них есть на сайте нашего университета? Решение.
Системный
Systemd — один из наиболее широко используемых инструментов управления системными службами в современном мире Linux.
Мы не будем вдаваться в подробности, а просто рассмотрим две самые важные команды: systemctl и journalctl.
Обратите внимание, что systemd — это демон, а systemctl — это команда для управления этим демоном.
СпуЎтДанГ а заставенГ слуЕѕбы
Запустить службу с помощью systemd очень просто. Следующие команды запускают sshd: сервер SSH:
Если служба уже запущена, ничего не произойдет.
Убедитесь, что теперь вы можете подключиться к своей машине с помощью следующей команды:
Для проверки состояния службы используется подкоманда status (обратите внимание, что status может быть запущен без sudo , но может отображать меньше информации):
Мы видим, что служба работает, большинство элементов не требуют пояснений. Файл /usr/lib/systemd/system/sshd.service содержит конфигурацию самой службы (например, как запустить/остановить/перезапустить службу), а не фактическую конфигурацию демона SSH, который находится внутри /etc/ssh .
Безопаснее остановить демон SSH на вашем ноутбуке, если вы не собираетесь его использовать:
Поволэнь а закЎзГЎнє слуѕѕбы
Если вы хотите запускать службу при каждой загрузке, вы можете включить службу:
Systemd позаботится о правильном порядке отдельных служб (чтобы сервер SSH запускался только после инициализации сети и т. д.).
Если вы больше не хотитечтобы демон SSH запускался по умолчанию, вместо этого вызовите команду с отключением.
Обратите внимание, что и включение, и выключение не меняют текущего состояния службы: вам все равно нужно запустить/остановить ее, если вы не хотите ждать перезагрузки. (Для удобства есть systemctl enable —now sshd , который также запускает службу.)
Большинство системных служб ведут журналы своей работы. Журналы обычно хранятся в /var/log/. Некоторые сервисы производят логи самостоятельно. Такие журналы представляют собой простые текстовые файлы, но их формат зависит от отдельных служб и их конфигурации.
Многие службы используют центральную службу ведения журналов, которая хранит все свои журналы в едином формате и которую можно настроить для сортировки журналов, отправки их по сети, удаления старых записей и т. д.
В Fedora служба журналирования называется journald . Он хранит файлы журналов в криптографически подписанных двоичных файлах, которые нельзя прочитать напрямую. Но вы можете прочитать журналы с помощью команды journalctl.
Например, следующая команда показывает журналы демона SSH:
Если вас интересует эта тема, обратитесь к соответствующим страницам руководства. Воспринимайте эти несколько абзацев как очень краткое введение в тему, позволяющую вам выполнять базовое управление вашей системой.
Таблица помощи CUPSu
Печать в Linux осуществляется подсистемой CUPS, которая работает сразу после установки практически с каждым принтером, поддерживающим IPP (протокол интернет-печати), а также поддерживает многие устаревшие принтеры.
Простая sudo dnf install cups устанавливает базовую подсистему, для определенных моделей могут потребоваться дополнительные драйверы. OpenPrinting.org содержит базу данных с возможностью поиска, чтобы определить, какие драйверы (если таковые имеются) необходимы. Например, для большинства принтеров HP потребуется установить пакет hplip.
Обычно вы хотите, чтобы CUPS работал в вашей системе все время, поэтому вам необходимо включить его:
CUPS имеет удобный веб-интерфейс, который можно использовать для настройки принтеров. Для многих современных принтеров, подключенных к сети, даже в этом часто нет необходимости, поскольку они будут правильно автоматически обнаружены.
Если вы уже запустили CUPS, попробуйте посетить http://localhost:631/. На вкладке Администрирование вы можете добавить новые принтеры. Выбор правильной модели помогает CUPS решить, какие параметры отображать в диалоговом окне печати, и обеспечивает правильное функционирование печати в градациях серого и аналогичных функций.
Скенов на помощь Сане
Поддержка сканера в Linux осуществляется с помощью SANE (Scanner Access Now Easy). Как и в случае с печатью, большинство сканеров будут определяться автоматически, и если вы уже знакомы с GIMP, он поддерживает SANE. Добавьте его с помощью sudo dnf install xsane-gimp .
Фактическое сканирование изображения может быть выполнено из Файл -> Создать -> Диалоговое окно XSane , в котором вы выбираете свое устройство, свойства сканирования (например, разрешение или цвета), а затем можете начать фактическое сканирование.
ОпакованГ© споуЕЎтД›нГ Гєлох с Кронем
В вашей системе есть множество задач, которые необходимо периодически выполнять. Многие из них связаны с обслуживанием системы, например ротация журналов (удаление устаревших журналов), но даже обычные пользователи могут захотеть выполнять обычные задачи.
Типичным примером может быть резервное копирование $HOME или ежедневное изменение обоев рабочего стола.
С точки зрения администратора вам необходимо установить демон cron и запустить его. В Fedora фактический пакет называется cronie , но служба по-прежнему называется crond .
Общесистемные задания (задачи) определяются /etc/cron.*/ , где вы можете напрямую размещать свои скрипты. Например, периодическое резервное копирование вашей машиныобычно в виде скрипта backup.sh помещается в /etc/cron.daily/ .
Если вам нужна более подробная спецификация, чем та, которая предлагается в каталогах cron.daily или cron.hourly, вы можете указать ее в пользовательском файле внутри /etc/cron.d/ .
Там каждая строка определяет одно задание: запрос на выполнение указанной команды в указанное время под указанным пользователем (обычно root ). Время указывается в виде минут (0–59), часов (0–23), дня месяца (1–31), месяца (1–12) и дня недели (0–6, 0 — воскресенье). Вы можете использовать * для «любого» в каждом поле. Дополнительные сведения см. в crontab(5) .
Поэтому следующий файл /usr/local/bin/backup.sh будет выполняться каждый день через 85 минут после полуночи (т. е. в 1:25 ночи). Вторая строка будет вызывать big-backup.sh каждое воскресное утро.
Обратите внимание, что cron.d обычно содержит специальный вызов следующей формы, который гарантирует выполнение скриптов cron.hourly (т. е. сам демон cronie смотрит только внутри /etc/cron.d/ , использование cron .daily или cron.monthly обрабатывается специальными заданиями).
СпуЕЎтДанГ под обыДЌейнГЅм уЕѕивателем
Обычные пользователи (т. е. без полномочий root) не могут редактировать файлы в каталоге /etc/cron.d/. Вместо этого у них есть команда crontab, которую можно использовать для редактирования личной таблицы cron (то есть списка заданий cron).
Вызов crontab -l покажет текущее содержимое вашей таблицы cron. Вероятно, он ничего не напечатает.
Чтобы отредактировать таблицу cron, запустите crontab -e . Запустится ваш любимый редактор, в котором вы сможете добавлять строки в указанном выше формате, на этот раз без указания пользователя.
Например, добавление следующей записи будет менять фон рабочего стола каждый день:
Конечно, если у вас есть такой скрипт в данном месте. Если вы действительно хотите попробовать, следующий скрипт работает дляXfce и использует Lorem Picsum.
Оценка работ (крайний срок: 1 мая)
ОБНОВЛЕНИЕ : Обратитесь к пользователю lab10 в журнале 10/ip_addr.json, извините за путаницу.
10/port_forward.txt (25 баллов)
Существует веб-сервер на порту 8177 по адресу linux.ms.mff.cuni.cz.
Этот веб-сервер недоступен извне, а только локально.
Используйте SSH для доступа к нему на вашем компьютере, а также через порт 8011 . Затем скопируйте указанный текст из http://127.0.0.1:8011/?student=LOGIN (замените LOGIN своим именем пользователя GitLab , а не UKDO) в репозиторий вашего проекта GitLab.
Скопированный текст также должен содержать ваше имя пользователя.
10/ip_addr.json (35 баллов)
Не в небольшом контексте .
Поскольку ping и ip-адрес являются отправными точками практически для любой настройки сети, мы хотим, чтобы вы могли передавать ввод ip-адреса. Мы настроили виртуальную машину, подключенную к inux.ms.mff.cuni.cz, и ваш следующий шаг — настроить ее IP-адрес. Цель не в том, чтобы создать скрипт, а только в том, чтобы повторить настройки вручную.
По техническим причинам у вас не будет доступа к машине, но мы установили так называемую принудительную команду на linux.ms.mff.cuni.cz, которая распечатает конфигурацию.
Фактическое описание включено здесь.
Используйте ключ, который вы загрузили во фрейме 07, и подключитесь как пользователь lab10 к linux.ms.mff.cuni.cz. Это напечатает мне выходной IP-адрес одной машины.
Перечитайте эту конфигурацию и создайте простой JSON со следующей структурой. JSON будет словарем (словарь/сопоставление), где ключом будет имя интерфейса, а значением будет IP-адрес (только IPv4), включая указанную сеть (т.192.168.1.177/18). Если адрес еще не загружен, вставьте число «нет».
В качестве примера выходные данные этого упражнения будут сохранены следующим образом.
Тесты проверяют только базовый формат, по понятным причинам они не проверяют фактические ответы.
ОБНОВЛЕНИЕ : у вас должен быть установлен jq.
Что насчет ваших открытых ключей : на данный момент мы добавили ключи в том виде, в каком они есть в вашем хранилище. Если вы пропустили девять заданий, загрузите их прямо сейчас.
Мы постараемся регулярно обновлять список.
Не оставляйте задачу на последний момент — мы не можем гарантировать, что будем обновлять ключи чаще, чем раз в день.
10/fat.txt (40 баллов)
/lab10.fat.img — это образ диска с одним файлом. Вставьте его (распакованный) образ в 10/fat.txt (на GitLab).
/lab10.fat.img можно создать только в том случае, если вы подключились к компьютеру хотя бы один раз.
Если у вас нет файла, подождите до следующего дня.
Не оставляйте задачу на последнюю минуту и свяжитесь с нами, если файл не отображается, как описано выше.
Полезная информация
Знание концепции…
Знание концепции означает, что вы понимаете смысл и контекст заданной темы и способны поместить темы в осмысленные рамки. Итак, вы можете…
объясните разницу между (обычным) переадресованным портом SSH и так называемым обратным перенаправлением порта
объяснить, что такое журнал и каковы обычные варианты его управления
объясните, что такое сервис (демон)
объяснить жизненный цикл и возможные состояния сервисов
объясните, почему использование nmap обычно ограничено сетевыми администраторами
объяснить, почему они не нужныЛюбые специальные инструменты для работы с образами дисков
объясните разницу между обычным (обычным) файлом, адресом, символической ссылкой, загруженным файлом и файлом, представляющим состояние системы (файловая система /proc)
Практические навыки
Практические навыки обычно связаны с использованием этих программ для решения различных задач. Итак, пока…
использовать переадресацию порта SSH ( переадресация порта SSH )
используйте systemctl для запуска/остановки службы
используйте systemctl для включения сервиса
используйте journalctl для отображения журнала
подключение и работа с дисками (как физическими, так и образами дисков)
используйте df для получения сводной информации (свободное место и т.д.) о подключенных дисках
используйте lsblk, чтобы узнать информацию о конкретных устройствах
использовать nc (с базовыми параметрами)
используйте dd для копирования данных диска (необязательно)
используйте photorec для восстановления поврежденной файловой системы (необязательно)
используйте NetworkManager для установки статических IP-адресов (необязательно)
настроить cron для обычного пользователя (необязательно)
настройте принтер с помощью CUPS (опционально)
используйте XSane для доступа к сканерам (необязательно)