Контейнер ОС systemd-nspawn непригоден для использования, потому что я не могу установить пароль root

Использование ed :

printf "%s\n" $(printf "%sd\n" $(sort -rnu Seqlist)) w | ed ContentFile

Здесь используется printf для построения списка команд (команды удаления строк из уникального, отсортированного в обратном порядке списка номеров строк из Seqlist, и " w "для записи измененного файла обратно на диск) для ed для использования для редактирования ContentFile

3
08.09.2016, 18:34
1 ответ

По какой-то причине dnf не установил "правильную" метку SELinux в / etc / passwd. Но он установил метку на / bin / passwd. Это несоответствие является причиной проблемы. Дальнейшие объяснения приветствуются :).

$ ls -Z fedora-24/etc/passwd
unconfined_u:object_r:etc_t:s0 fedora-24/etc/passwd
$ ls -Z /etc/passwd
system_u:object_r:passwd_file_t:s0 /etc/passwd

$ ls -Z fedora-24/bin/passwd
system_u:object_r:passwd_exec_t:s0 fedora-24/bin/passwd
$ ls -Z /usr/bin/passwd
system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd

Попытка запустить restorecon -Rv / внутри контейнера ничего не дает. IIRC libselinux определяет, когда он запускается в контейнере, и ничего не делает.

Решение

Нам нужно запустить извне контейнера:

restorecon -Rv fedora-24/

Это гарантирует, что все метки SELinux сброшены. (До значения, ожидаемого хостом контейнера, т. Е. Без метки). Тогда мы сможем успешно установить пароль root.

7
27.01.2020, 21:15

Теги

Похожие вопросы