원래의 자세한 지침을 결합했습니다블로그 게시물, 그리고 에서매뉴얼 페이지(yum 대신 dnf를 사용하세요)
# sudo dnf -y --releasever=24 --installroot=$HOME/fedora-24 --disablerepo='*' --enablerepo=fedora --enablerepo=updates install systemd passwd dnf fedora-release vim-minimal
# sudo systemd-nspawn -D fedora-24
Spawning container fedora-24 on /home/alan-sysop/fedora-24
Press ^] three times within 1s to kill container.
-bash-4.3# passwd
Changing password for user root.
New password:
Retype new password:
결과:
passwd: Authentication token manipulation error
AVC 팝업, SELinux 오류. passwd
연결해제(교체)가 허용되지 않는다고 나옵니다 /etc/passwd
. "문제 해결" 버튼 passwd_file_t
에 대한 제안 중 하나는 /etc/passwd
.
무엇이 잘못되었으며 어떻게 해결합니까?
답변1
어떤 이유로 dnf는 /etc/passwd에 "올바른" SELinux 레이블을 설정하지 않습니다. 그러나 /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 레이블이 재설정됩니다. (컨테이너 호스트가 예상하는 값, 즉 태그가 지정되지 않음) 그러면 루트 비밀번호를 성공적으로 설정할 수 있습니다.
답변2
부팅된 Cent OS 8 사용자 공간에도 동일한 문제가 있습니다.
발견된 문제
[root@- bootstrapped_base_systems]# ls -Z centos8/bin/passwd
system_u:object_r:passwd_exec_t:s0 centos8/bin/passwd
[root@- bootstrapped_base_systems]# ls -Z centos8/etc/passwd
unconfined_u:object_r:etc_t:s0 centos8/etc/passwd
( etc/passwd
이 경우에는 괜찮습니다)
에 고정
[root@- bootstrapped_base_systems]# chcon -v unconfined_u:object_r:etc_t:s0 centos8/bin/passwd
changing security context of 'centos8/bin/passwd'
변경사항이 확인되었습니다.
[root@- bootstrapped_base_systems]# ls -Z centos8/bin/passwd
unconfined_u:object_r:etc_t:s0 centos8/bin/passwd