Вопросы для подготовки

Вопросы для подготовки #

Тема «История ОС GNU/Linux и UNIX-подобных ОС» #

  • В какое десятилетие была разработана первая версия ОС UNIX: 1960-1970, 1970-1980, 1980-1990, 1990-2000?
  • В какое десятилетие было разработано ядро ОС Linux: 1960-1970, 1970-1980, 1980-1990, 1990-2000?
  • В какое десятилетие был основан проект GNU: 1960-1970, 1970-1980, 1980-1990, 1990-2000?
  • Укажите ключевые отличия между ОС UNIX и ОС семейства GNU/Linux.
  • На каких условиях можно применять ОС семейства GNU/Linux: бесплатно для ознакомления, бесплатно для некоммерческого условия, бесплатно для коммерческого использования.
  • Какие ограничения существуют в применении ОС данного семейства?
  • Какие ограничения накладывают лицензии BSD и GPL? Почему компаниям выгодно использовать данные лицензии при разработке ПО? Почему это может быть проблемой?
  • Являются ли ОС семейства GNU/Linux исключительно решением для использования на серверных устройствах? Можно ли использовать их на других устройствах?
  • Каким образом можно получить доступ к ОС GNU/Linux в рамках других распространённых настольных ОС: Windows, macOS?
  • Каким образом происходит установка дистрибутива GNU/Linux Debian в рамках виртуальной машины VirtualBox?
  • Как можно получить доступ к командному интерфейсу GNU/Linux?

Тема «Базовые принципы использования командного интерфейса» #

  • В каком формате происходит взаимодействие пользователя и вычислительной системы при использовании командного интерфейса?
  • Что такое командный интерпретатор? Перечислите известные вам командные интерпретаторы.
  • Что такое эмулятор терминала? Перечислите известные вам эмуляторы терминала.
  • Что такое приглашение к вводу? Зачем оно применяется в командном интерфейсе? В каких приложениях данный подход рекомендуется использовать?
  • Какую информацию можно извлечь из базового приглашения интерпретатора Bash?
  • Опишите основной цикл взаимодействия с командным интерпретатором.
  • Какой вывод следует ожидать от команды, которая успешно выполнили своё действие? Какой вывод следует ожидать от команды, которая завершила свою работу ошибочно? Как можно проверить результат работы последней выполненной команды?
  • Какие задачи можно решать с помощью командного интерфейса? Какие задачи невозможно решить с помощью данного интерфейса, почему?

Тема «Устройство файловой системы и основные команды для работы с файлами» #

  • Каким образом устроено дерево каталогов ОС GNU/Linux и ОС семейства Windows? Чем они схожи, в чём принципиальное отличие между ними?
  • Что обозначает термин текущий рабочий каталог? К какой части вычислительной системы данный термин применим?
  • Для чего используются специальные каталоги «..» и «.»? В какой момент времени они создаются?
  • Что такое относительный путь? Что такое абсолютный путь? Как эти понятия связаны с понятием текущего рабочего каталога?
  • Какая команда может быть использована для получения текущего рабочего каталога?
  • Какие файлы считаются «скрытыми» в ОС GNU/Linux? Где такие файлы обычно находятся? Какое назначение у данных файлов?
  • Какие команды можно использовать для изменения текущего рабочего каталога?
  • Как следует работать с файлами, содержащими пробелы в своих названиях?
  • Умейте формировать относительные и абсолютные пути к файлам и каталогам файловой системы GNU/Linux.
  • Умейте изменять текущий рабочий каталог с использованием любых путей.

Тема «Получение информации о командах из стандартных руководств» #

  • Каким образом интерпретатор Bash обрабатывает команды, переданные пользователем?
  • Какие типы команд может обрабатывать интерпретатор Bash? Как можно определить тип команды? В чём их принципиальное отличие друг от друга?
  • Как можно прочитать документацию для встроенных команд интерпретатора?
  • Объясните типичные схемы кодирования различных вариантов вызова команды, принятой в стандартной документации. Приведите примеры.
  • Каким образом можно прочитать документацию, встроенную в приложение?
  • Для чего используется приложение man? Какова связь между приложениями man и приложением-пейджером less?
  • Какие существуют разделы man-руководств? Как открыть руководство из целевого раздела?
  • Как можно выполнять поиск информации по доступным локально man-руководствам?
  • Какие возможности предоставляют псевдонимы Bash? Как их использовать?
  • Умейте получать текст документации на все типы команд.
  • Умейте получать знания из текстов документации на разные типы команд.

Тема «Использование текстовых редакторов Vim и GNU Emacs» #

  • Какое применение существует у текстовых редакторов в командном интерфейсе?
  • Какие существуют текстовые редакторы?
  • Опишите ключевые отличия между текстовыми редакторами emacs, nano и vim.
  • Умейте использовать один из текстовых редакторов emacs, nano или vim в рамках консольного интерфейса.

Тема «Перенаправление потоков ввода-вывода, построение конвейеров» #

  • Какие потоки данных доступны приложению после его запуска? Какое у них предназначение?
  • Где пользователь может увидеть или повлиять на содержимое данных потоков в командном интерпретаторе?
  • Какие возможности у пользователя есть по перенаправлению стандартного потока вывода?
  • Какие возможности у пользователя есть по перенаправлению стандартного потока вывода сообщений об ошибках?
  • Какие возможности у пользователя есть по перенаправлению стандартного потока ввода?
  • Как можно объединять выходные потоки данных? Как можно перенаправить потоки вывода в файл?
  • Каким образом следует использовать конвейеры для объединения работы нескольких приложений? Какие типичные задачи можно решать с помощью
  • Сколько приложений можно объединить с помощью конвейеров? Есть ли какие-либо ограничения?
  • Перечислите назначение типовых фильтров sort, uniq, wc, head, tail, grep, sed, awk.
  • Умейте перенаправлять потоки ввода-вывода в файлы.
  • Умейте формировать конвейеры произвольной сложности.

Тема «Права доступа к файлам и каталогам» #

  • Что означают термины многозадачная и многопользовательская ОС? Объясните связь этих терминов друг с другом.
  • Какие требования предъявляются к многопользовательским ОС?
  • Опишите модель обеспечения безопасности файловой системы GNU/Linux: права пользователей и права каталогов файловой системы.
  • Каким образом можно получить информацию о правах текущего пользователя?
  • Каким образом можно получить информацию о правах произвольного пользователя? Перечислите приложения и местоположение локальны конфигурационных файлов.
  • Как узнать права доступа к файлам в GNU/Linux?
  • Каким образом соотносятся текстовые права доступа с их представлением в восьмеричной системе исчисления?
  • Какие есть подходы к изменению прав текущего пользователя?
  • Какие есть подходы к запуску приложений с правами другого пользователя?
  • Опишите назначение приложений chmod, chown, su, sudo, passwd, adduser, deluser и т.д.
  • Умение узнавать текущие права пользователя: названия, идентификаторы пользователя и групп.
  • Умение узнавать текущие права файлов: владелец, группа, атрибуты доступа.
  • Умение изменять права доступа к файлам и использованием строковых и числовых подходов.
  • Умение изменять текущего пользователя без необходимости авторизации. Правила использования приложений su, sudo.

Тема «Написание скриптов на языке Bash» #

  • Опишите предназначение механизма shebang в GNU/Linux.
  • Как запускать скрипты с явным и неявным указанием интерпретатора? В каких случаях следует применять каждый из способов?
  • Какое основное назначение у написания скриптов на языке Bash?
  • Какие есть альтернативы к написанию скриптов кроме Bash? В каких случаях следует использовать альтернативные языки программирования?
  • Опишите процесс обработки строк в Bash. Опишите расширения путей и порядок их применения при обработке строк в Bash.
  • Опишите синтаксис определения переменных, присваивания им значений и получение значений переменных.
  • Опишите синтаксис условного оператора, циклических операторов Bash. Укажите ключевые особенности проверки на правдивость и ложность в рамках данных операторов.
  • Опишите синтаксис для доступа к аргументам скриптов и функций на языке Bash?
  • Каким образом можно проверить качество скриптов на языке Bash?
  • Умение оформлять скрипты на языке Bash для решения произвольных задач.
  • Умение отлаживать работу скриптов на языке Bash.

Тема «Управление процессами в GNU/Linux» #

  • Что такое процесс? Чем отличается процесс от приложения?
  • Откуда процессы берутся в операционной системе?
  • Какими правами обладают запущенные процессы? Откуда берутся права у новых процессов?
  • Может ли процесс изменить (расширить или уменьшить) список доступных прав?
  • В каких состояниях может находиться процесс? Для каких целей используются разные состояния процессов? Как процесс переходит между этими состояниями?
  • Какими ресурсами может обладать процесс?
  • Каким образом происходит выделение ресурсов процессам: кто инициирует, кто координирует?
  • Что такое сигнал? Кто может формировать сигналы процессам? Какие задачи решают с помощью сигналов процессам?
  • Опишите назначение приложений и типичные сценарии использования ps, top, kill, killall.
  • Какие возможности у Bash для работы с фоновыми процессами?
  • Опишите назначение команд bg, fg, jobs.
  • Умение просматривать список текущих процессов с помощью моментального просмотра ps и в интерактивной форме top.
  • Умение посылать сигналы процессам по их названию, уникальному номеру и т.д.
  • Умение приостанавливать работу процессов с помощью командного интерпретатора Bash. Умение восстанавливать работу процесса в фоновом и в основном процессах.

Тема «Управление пакетами с помощью инструментов dpkg и apt» #

  • Опишите типичные схемы доставки приложений в операционных системах семейства Windows, Android, iOS, macOS.
  • Какое назначение у подсистемы пакетного менеджера в рамках ОС GNU/Linux?
  • Какие пакетные менеджеры существуют? Что между ними общее? Какие отличия?
  • Какое назначение несут репозитории? Кто может предоставлять репозиторий?
  • Из каких частей состоит пакет? Что такое зависимости пакета, для чего они применяются?
  • Укажите на способы поиска пакетов в пакетном менеджере APT и дистрибутиве Debian GNU/Linux.
  • Каким образом можно установить пакет?
  • Каким образом происходит настройка пакетного менеджера APT?
  • Какие разделы репозиториев есть в Debian GNU/Linux?
  • Умение использовать пакетный менеджер apt для установки пакетов из репозитория.
  • Умение использовать систему пакетов dpkg для установки и поиска пакетов, для поиска соответствия между файлами и пакетами.

Тема «Установка приложений из исходных кодов для языков C++ и Python» #

  • Как выглядит процесс компиляции приложений, написанных на языке C++?
  • Какой инструментарий можно использовать для компиляции приложений на языке C++ в GNU/Linux?
  • Как называются пакеты Debian GNU/Linux с инструментами разработки приложений на языке C++?
  • Как происходит компиляция и установка приложений, использующих инструментарий Autotools и Cmake?
  • Какие требования предъявляются к компиляции и к работе приложения на языке Python?
  • В каких каталогах располагаются пакеты Python-приложений?
  • Какие средства управления версиями Python-приложений и наборами Python-пакетов вы знаете?
  • Как происходит установка приложений с помощью pip и setuptools?
  • Умение выполнения компиляции и установки приложений на языке C++ с использованием инструментария setuptools.
  • Умение выполнения установки приложений и зависимостей с использованием Python-пакетов из pip-репозитория.

Тема «Система инициализации и управления службами systemd» #

  • Опишите процесс загрузки ОС GNU/Linux.
  • Какие существуют системы инициализации? Назовите их преимущества и недостатки.
  • Какие типичные стадии инициализации присутствуют в systemd?
  • Какие команды systemcl используются для настройки стадий инициализации ОС? Как можно перейти между данными стадиями?
  • Каким образом происходит настройка служб в systemd?
  • Какие типы конфигурационных файлов есть в systemd?
  • Как происходит настройка выполнения задач по расписанию?
  • Как просматривать и управлять состоянием служб systemd?
  • Умение просматривать текущее состояние системы инициализации systemd.
  • Умение просматривать текущее состояние служб и таймеров системы systemd.
  • Умение добавлять новые службы и таймеры в систему systemd.

Темы семинаров #

SSH #

  • Опишите назначение технологии SSH: как она устроена, какие задачи позволяет решать?
  • Где находится конфигурационный файл сервера OpenSSH? Какие ключевые настройки можно сделать на стороне сервера?
  • Где находится конфигурационный файл клиента OpenSSH? Какие настройки логично поместить в данный файл?
  • Где находятся пользовательские ключи клиента OpenSSH? Для чего они используются?
  • Умение устанавливать SSH-сервер OpenSSH, выполнять его базовую настройку. Умение устанавливать SSH-клиент OpenSSH.
  • Умение ограничивать доступ к SSH-серверу с помощью указания имён, групп пользователей, ключей.
  • Умение описывать стандартные параметры подключения к SSH-серверам в конфигурационном файле клиента.

Мультиплексер Zellij #

  • Опишите назначение технологии терминального мультиплексера? Какие альтернативы есть для решения данных задач?
  • Опишите ключевые сценарии работы с мультиплексером Zellij: работа с вкладками, панелями, переключение, изменение размера.
  • Умение использовать мультиплексер Zellij: управление панелями, вкладками, размерами элементов, перемещение между элементами.
  • Умение помещать сессию работы в фоновый режим и восстановление работы сессии.

Работа с файловыми хранилищами #

  • Опишите логическое устройство жёсткого диска: блочный уровень, разделы, файловые системы.
  • Опишите назначение виртуальной файловой системы в GNU/Linux.
  • Какие элементы виртуальной файловой системы GNU/Linux соответствуют устройствам частей жёсткого диска?
  • Каким образом происходит подключение файловой системы на разделе жёсткого диска к виртуальной файловой системе? Как сделать подключение постоянным?
  • В чём отличие подключения дисковых разделов с помощью fstab с systemd?
  • Как произвести форматирование раздела жёсткого диска в необходимую файловую систему, например ext4 или exfat.
  • Умение просматривать список устройств хранения данных.
  • Умение просматривать список подключённых дисковых разделов.
  • Умение подключать дисковые разделы к каталогам файловой системы GNU/Linux.
  • Умение формировать постоянные подключения дисковых разделов с помощью /etc/fstab и systemd.

Веб-сервер nginx #

  • Опишите назначение веб-серверов, их типичные схемы применения.
  • Опишите структуру каталогов конфигурации веб-сервера nginx. Как происходит подключение и отключение опциональных частей конфигурации?
  • Как выглядит типичный сценарий по добавлению поддержки нового виртуального сервера в рамках nginx?
  • Как описывать раздачу статических файлов с файловой системы?
  • Как описывать обратное проксирование запросов к веб-приложениям?
  • Как организовать одновременную раздачу данных и с файловой системы и веб-приложением?
  • Уметь устанавливать веб-сервер nginx из репозитория.
  • Уметь подключать и отключать описания виртуальных серверов nginx.
  • Уметь формировать описания виртуальных серверов nginx с возможностью настройки: обслуживаемого доменного имени, способа предоставления данных (с файловой системы, проскирование).

VPN-сервер OpenVPN #

  • Опишите назначение технологии VPN. Какие типичные задачи можно решать с помощью технологии VPN?
  • Опишите архитектуру приложения OpenVPN: выделенный сервер, клиенты, протокол взаимодействия.
  • Каким образом происходит настройка сервера OpenVPN? Какие ключевые параметры есть? Как настраивать список пользователей для сервера?
  • Каким образом происходит настройка клиента OpenVPN?
  • Уметь устанавливать клиентские и серверные компоненты сервера OpenVPN.
  • Уметь настраивать серверную часть для обеспечения подключения ряда клиентских приложений.
  • Уметь настраивать клиенсткое приложение для подключения к серверной части. Умение автоматизировать подключение с помощью менеджера сетевых подключений NetworkManager.

Синхронизация данных между компьютерами с помощью Syncthing #

  • Опишите назначение технологии синхронизации данных syncthing.
  • Как происходит настройка приложения syncthing на компьютере? Как происходит связывание нескольких компьютеров друг с другом?
  • Как происходит разрешение конфликтных ситуаций?
  • Можно ли использовать данную систему как средство резервного копирования?
  • Уметь устанавливать приложение Syncthing на компьютер, формировать systemd-службу для его автоматического запуска.
  • Уметь настраивать связь между рядом несколькими копиями Syncthing по ряду каталогов.
  • Уметь решать конфликты синхронизации между разными системами.

Система резервного копирования kopia #

  • Опишите назначение технологии. Чем данная технология лучше или хуже ручного создания копий с помощью
  • Каким образом происходит установка приложения на компьютер?
  • Как происходит создание хранилища для хранения резервных копий?
  • Как происходит добавление новых данных в хранилище резервных копий?
  • Как происходит извлечение данных из хранилища резервных копий?
  • Уметь устанавливать систему резервного копирования kopia.
  • Уметь формировать хранилище для сохранения резервных копий данных.
  • Уметь просматривать содержимое хранилище с резервными копиями, управлять резервными копиями.
  • Уметь выполнять сохранение и восстановление из локальных хранилищ.
  • Уметь выполнять сохранение и восстановление из хранилищ, доступных по протоколу SSH.

Развёртывание веб-приложения на языке Python #

  • Опишите принципиальную схему работы веб-приложений на языке Python.
  • Что такое виртуальное окружение Python? Для чего оно используется при установке?
  • Опишите процесс развёртывания веб-приложения Weblate с использованием python-пакетов из pypi.org.
  • Уметь устанавливать пакеты для управления виртуальными окружениями Python.
  • Уметь устанавливать пакеты для работы веб-приложения в виртуальное окружение Python.
  • Уметь настраивать рабочие копии веб-приложений, зависимости которых установлены в виртуальное окружение.
  • Уметь настраивать systemd-службы для автоматического запуска веб-приложений.
  • Уметь настраивать обратное проксирование nginx для работы веб-приложений.

Передача файлов по протоколу SFTP #

  • Опишите предназначение технологии. Какие технические средства обеспечивают взаимодействие по указанному протоколу?
  • Опишите преимущества и недостатки данной технологии по сравнению с другими средствами, например scp и syncthing.
  • Каким образом можно ограничить доступ клиента к файловой системе на сервере на уровне указанного каталога?
  • Как выполнять передачу отдельных файлов и каталогов с клиента на сервер и наоборот?
  • Как выполнять изменение рабочего каталога на стороне клиента и на стороне сервера?
  • Как выполнить просмотр содержимого каталогов на стороне клиента и на стороне сервера?
  • Уметь устанавливать клиентские и серверные приложения из репозитория.
  • Уметь ограничивать доступ клиентов к самой технологии передачи файлов на стороне сервера.
  • Уметь ограничивать доступ клиентов к определённым частям файловой системы на стороне сервера.
  • Уметь выполнять передачу отдельных файлов и каталогов с помощью технологий SFTP.

Настройка Samba #

  • Опишите предназначение технологии. В каких программных средах она реализована? Какие задачи позволяет решать?
  • Опишите преимущества данной технологии по сравнению с другими средствами передачи данных.
  • Каким образом происходит настройка сервера Samba по раздаче файлов?
  • Каким образом происходит ограничение доступа к каталогам? Есть ли связь между Samba-пользователями или пользователями основной ОС?
  • Как выполнить просмотр состояния сетевых каталогов на Samba-сервере?
  • Уметь устанавливать клиентские и серверные приложения из репозитория.
  • Уметь настраивать список сетевых каталогов.
  • Уметь настраивать права доступа к сетевым каталогам.
  • Уметь подключаться с помощью клиента smbclient к серверу.
  • Уметь устанавливать постоянные подключения через систему точек подключения.

Ruby on Rails #

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su