Тема «История ОС 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