Как да

Задайте етикет за контекст на SELinux за потребителска директория на Podman

Задайте етикет за контекст на SELinux за потребителска директория на Podman

Искам да задам персонализирана директория за съхраняване на данните на контейнери, създадени с Podman, как мога да променя типа файл на директорията (заедно със съдържанието му) на контекстен тип, използван от Podman?. В системите, изпълняващи SELinux, всички процеси и файлове са етикетирани по начин, който представлява информация, свързана със сигурността. Ако се опитате да създадете контейнер с данни, съхранявани в директория, различна от / var / lib / контейнери ще получите отказано разрешение.

Ще демонстрирам това на сървър CentOS 8. Нека поставим SELinux в Enforcing режим.

$ sudo setenforce 1 $ sestatus SELinux статус: активиран SELinuxfs монтиране: / sys / fs / selinux SELinux коренна директория: / etc / selinux Име на заредено правило: насочен Текущ режим: прилагане на режим от конфигурационен файл: налагане на политика MLS статус: активирана политика deny_unknown status : разрешена проверка на защитата на паметта: действителна (сигурна) версия на политиката за максимално ядро: 31

Инсталирайте инструменти за контейнери, които предоставят podman.

sudo dnf модул инсталиране на контейнер-инструменти

Нека потвърдим, че podman работи, както бихме очаквали, като стартираме helloworld контейнер.

$ podman run --rm hello-world Опитвам се да изтегля докер.io / library / hello-world ... Получаване на подписи на източника на изображение Копиране на blob 0e03bdcc26d7 готово Копиране на config bf756fb1ae готово Писане на манифест до местоназначение на изображение Съхранение на подписи Здравейте от Docker! Това съобщение показва, че вашата инсталация изглежда работи правилно. За да генерира това съобщение, Docker предприе следните стъпки: 1. Клиентът на Docker се свърза с демона на Docker. 2. Демонът на Docker извади изображението "здравей-свят" от Docker Hub. (amd64) 3. Демонът на Docker създаде нов контейнер от това изображение, който изпълнява изпълнимия файл, който създава изхода, който четете в момента. 4. Демонът на Docker излъчи този изход към клиента на Docker, който го изпрати до вашия терминал. За да опитате нещо по-амбициозно, можете да стартирате контейнер на Ubuntu с: $ docker run -it ubuntu bash Споделяне на изображения, автоматизиране на работните процеси и други с безплатен Docker ID: https: // hub.докер.com / За повече примери и идеи посетете: https: // docs.докер.com / начало /

Потвърдете текущата корен настройка на директория за контейнерите.

$ podman информация | grep -i root без корени: false GraphRoot: / var / lib / контейнери / съхранение RunRoot: / var / run / контейнери / съхранение

Нека създадем персонализирана директория за съхранение на данните.

sudo mkdir -p / data / контейнери

Актуализирайте настройката и променете директорията на създадената по-горе.

$ sudo vi / etc / контейнери / съхранение.conf # Основно местоположение за четене / запис на контейнер за съхранение #graphroot = "/ var / lib / контейнери / съхранение" graphroot = "/ data / контейнери"

Опитайте да стартирате контейнер.

# podman run --rm -it ubuntu bash Получаване на подписи за източник на изображение Копиране на blob 0f3630e5ff08 готово Копиране на blob d72e567cc804 готово Копиране на blob b6a83d81d1f4 готово Копиране на config 9140108b62 готово Писане на манифест в дестинация на изображение Съхранение на подписи bash: грешка при зареждане на споделени библиотеки: libc.така.6: не може да промени защитата на паметта

От изхода получих съобщението за грешка:

bash: грешка при зареждане на споделени библиотеки: libc.така.6: не може да промени защитата на паметта

Нека зададем правилни SELinux етикети за директорията / данни / контейнери след това опитайте отново.

sudo semanage fcontext -a -e / var / lib / контейнери / данни / контейнери sudo restorecon -R -vv / данни / контейнери

Ако командата за отделяне не е намерена, инсталирайте с командите по-долу.

sudo yum инсталирайте policycoreutils-python-utils -y

Потвърдете типа контекст на SELinux.

$ ls -dZ / data / контейнери / unconfined_u: object_r: container_var_lib_t: s0 / data / контейнери /

Потвърдете дали типът е зададен на container_var_lib_t.

Рестартирайте контейнера:

# podman run --rm -it ubuntu bash [имейл защитен]: / # cat / etc / os-release ИМЕ = "Ubuntu" VERSION = "20.04.1 LTS (Focal Fossa) "ID = ubuntu ID_LIKE = debian PRETTY_NAME =" Ubuntu 20.04.1 LTS "VERSION_ID =" 20.04 "HOME_URL =" https: // www.ubuntu.com / "SUPPORT_URL =" https: // помощ.ubuntu.com / "BUG_REPORT_URL =" https: // бъгове.стартовата площадка.net / ubuntu / "PRIVACY_POLICY_URL =" https: // www.ubuntu.com / legal / terms-and-policy / privacy-policy "VERSION_CODENAME = focal UBUNTU_CODENAME = focal [имейл защитен]: / # изход изход

Контейнерът беше стартиран успешно.

Още статии за Подман:

Изложете външния регистър на OpenShift външно и влезте с Docker / Podman CLI

Стартирайте Podman на Windows 10 | Windows Server 2019 с WSL2

Как да стартирам Docker / Podman контейнери като Systemd услуга

Как да разберете вашето системно време за работа в Windows 10
Искате ли да знаете кога вашата система Windows е била рестартирана за последно? Или искате да знаете от колко време системата ви е включена и работи?...
Как да повишите производителността на Windows 10, като деактивирате анимациите
Windows 10 се предлага с много интересни функции за своите потребители и една от тях е анимационните ефекти. Това го прави по-привлекателен за вас, до...
Как да промените местоположението на папката Dropbox в Windows 10
Dropbox е приложение за хостинг на файлове, което ви позволява да архивирате вашите файлове (снимки, видеоклипове, документи и т.н.) в облачното храни...