From e432b11100815e0334f219dda5bf5282625b7679 Mon Sep 17 00:00:00 2001 From: Vladimir Protsenko Date: Mon, 12 Sep 2022 16:27:37 +0400 Subject: [PATCH] Added tasks for package management lesson. Corrections in file permission tasks. --- 07_file_permissions/tasks.md | 4 +- 08_debian_package_management/tasks.md | 117 ++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 08_debian_package_management/tasks.md diff --git a/07_file_permissions/tasks.md b/07_file_permissions/tasks.md index 6fa2ad7..f426d17 100644 --- a/07_file_permissions/tasks.md +++ b/07_file_permissions/tasks.md @@ -29,10 +29,10 @@ #!/bin/my_unsecure_bash -p touch /tmp/root_$RANDOM ``` -Сделайте его исполняемым для всех. Вызовите скрипт от пользователя stud. Обратите внимание на владельца созданного файла /tmp/root_*. Как на него повлиял SUID? +Сделайте его исполняемым для всех. Вызовите скрипт от пользователя stud. Обратите внимание на владельца созданного файла /tmp/root_*. Как на него повлиял SUID? Установите SUID на gen_file_root.sh, сгенерируйте новый файл. Есть ли изменения в поле владельца? ### 9. -В каталоге /projects cоздайте файл test в папках 1, 2, 3. Поменяйте для папок атрибуты доступа для категории other: r--, r-x, --x соответственно. Зайдите под другого пользователя, который входит в категорию other и попробуйте найти файл с помощью find, начиная с каталога /projects. Попробуйте найти слово в содержимом файлов. Как влияют атрибуты на возможность поиска? +В каталоге /projects cоздайте файл test в папках 1, 2, 3. Поменяйте для папок атрибуты доступа для категории other: r--, r-x, --x соответственно. Зайдите под другого пользователя, который входит в категорию other и попробуйте найти файл с помощью find, начиная с каталога /projects. Попробуйте найти слово в содержимом файлов. Как влияют атрибуты на возможность поиска? # Справка diff --git a/08_debian_package_management/tasks.md b/08_debian_package_management/tasks.md new file mode 100644 index 0000000..296fb24 --- /dev/null +++ b/08_debian_package_management/tasks.md @@ -0,0 +1,117 @@ +# Задания + +### 0. +Обновите список пакетов из настроенных репозиториев в /etc/apt/sources.list командой apt. + +### 1. +Установите пакет apt-file с помощью apt. + +### 2. +Найдите с помощью apt-file пакет, содержащий команду ar. + +### 3. +Определите с помощью команды `apt search`, какие варианты пакета содержащего команду ar доступны. Установите подходящий для вашей системы. + +### 4. +Скачайте http://ftp.ru.debian.org/debian/pool/main/c/cmake/cmake_3.24.1-1_amd64.deb в отдельную папку. Перейдите в папку с пакетом и распакуйте .deb командой `ar -x путь-к-пакету`. В папке должны появиться: control.tar.xz data.tar.xz debian-binary. + +### 5. +Создайте папку control и распакуйте в неё control.tar.xz с помощью команды `tar xfC путь-к-архиву control`. Изучите содержимое. Сравните с выдачей `dpkg --info ` для .deb файла. + +### 6. +Создайте папку data и распакуйте в неё data.tar.xz с помощью команды `tar xfC путь-к-архиву data`. Изучите data с помощью команды `tree`. Сравните с выдачей `dpkg --contents ` для .deb файла. + +### 7. +Попробуйте вызвать исполняемый файл `usr/bin/cmake` из папки. Сопоставьте информацию в control файле пакета с выдачей команды `ldd usr/bin/cmake`. Если исполняемый файл не работает, найдите и установите зависимости в систему. Воспользуйтесь формой поиска на сайте https://www.debian.org/distrib/packages, если поиск по настроенным репозиториям не даёт результата. Добавьте репозиторий в котором есть нужная библиотека командой `apt edit-sources`. Обновите базу данных пакетов командой `apt update`. Завершите установку зависимостей и проверьте, что cmake работает. + +### 8. +Утилитой dpkg-query выведите список пакетов, зарегистрированных в dpkg базе данных. Есть ли среди них зависимости cmake, которые вы установили вручную? + +### 9. +Утилитой dpkg-query выведите среди установленных локально пакетов пакет, начинающихся с ‘libc6’. Утилитой apt-cache выполните тот же поиск по кэшу apt. Утилитой apt выполните тот же поиск по кэшу apt. Сравните, чем они отличаются. + +### 10. +Утилитой dpkg-query выведите статус пакета sudo и gcc. Чем выдача отличается от содержимого control файла .deb, скаченного ранее? + +### 11. +Утилитой dpkg-query выведите список установленных файлов пакета sudo (не выводятся файлы созданные скриптами). + +### 12. +Утилитой dpkg-query выведите список файлов с метаданными пакета (control files), установленных в систему. + +### 13. +Утилитой dpkg-query выведите содержимое одного из файлов с метаданными пакета (control files). + +### 14. +Утилитой dpkg-query выведите пути к файлам с метаданными пакета (control files). + +### 15. +Утилитой dpkg-query выполните поиск пакетов, которые установили в систему файл pam.conf. + +### 16. +Утилитой dpkg установите cmake .deb пакет, скаченный ранее. Ещё раз посмотрите на зависимости пакета. Как отреагировал dpkg на отсутствие зависимости cmake-data - установил или выдал ошибку? + +### 17. +Скачайте cmake-data и его транзитивные зависимости https://packages.debian.org/sid/amd64/cmake. Завершите установку cmake, и проверьте, что команда cmake установлена в систему (например, командами `which`, `find`) и работает `cmake --version`. + +### 18. +Проверьте файлы всех установленных пакетов в системе на наличие изменений/повреждений командой dpkg. Какие файлы не прошли проверку (`??5??????`)? + +### 19. +Сохраните список выбранных действий и состояний (selections) для пакетов в системе утилитой dpkg в файл. + +### 20. +Измените в сохранённом списке действие для пакета vim c текущего на deinstall (`man dpkg`, “Package selection states”). + +### 21. +Запустите команду `apt-get dselect-upgrade`. Какие пакеты будут установлены или удалены? + +### 22. +Настройте в `/etc/sudoers` конфигурационном файле для пользователя stud возможность выполнять команды от лица суперпользователя без запроса пароля: +``` +%sudo ALL=(ALL:ALL) NOPASSWD: ALL +``` +Удалите, а затем установите пакет sudo командой `apt remove`. Проверьте содержимое конфигурационного файла на изменения. Проделайте то же самое, но c командой `apt purge`. + +### 23. +Удалите cmake и cmake-data с помощью apt. Найдите в репозиториях, какая версия cmake доступна. Создайте файл в директории `/etc/apt/apt.conf.d/default-release` с следующим содержимым (man apt.conf): +``` +APT::Default-Release "stable"; +``` +Повторите поиск. Установите stable версию. Проверьте работоспособность команды и её версию `cmake --version`. Вы можете узнать значения текущих конфигурационных переменных `apt` командой `apt-conf dump`. + +### 24. +Заморозьте версию cmake командой `apt-mark` или с помощью `dpkg --get-selections`, `dpkg --set-selections`. Поменяйте умолчания `/etc/apt/apt.conf.d/default-release` на "unstable". Проведите обновление пакетов в системе. cmake не должен сохранить stable версию. + +### 25. +Удалите cmake для следующего упражнения в установке из исходного кода. Выполните `apt autoremove` для удаления ставших ненужными пакетов. + +### 26. +Установите git, если он ещё не установлен. Перейдите в /tmp и вызовите: +``` +git clone --depth=1 https://github.com/Kitware/CMake +``` +Ваша цель установить пакет в директорию /opt. + +Прочитайте README.md секцию "Building CMake from Scratch". Установите компилятор g++, make. Для поддержки openssl - libssl-dev заголовочные файлы. В качестве --prefix используйте `/opt/cmake/`. Выполните 3 этапа: конфигурация компиляции, компиляция проекта, и установка. Для использования многопоточной компиляции используйте флаг `-j` при вызове `make`. + +### 27. +Используйте команду `dpkg-reconfigure`, чтобы перенастроить пакеты, связанные с локализацией `console-setup` и раскладкой клавиатуры `keyboard-configuration`. + +# Справка + +Релевантные команды: + - apt + - apt-get + - apt-cache + - apt-mark + - apt-config + - dpkg + - dpkg-query + - dpkg-reconfigure + +Страницы документации: + - sources.list + - apt.conf + - dpkg.conf + - apt_preferences