元の詳細なガイドラインを組み合わせたブログ投稿、そしてマニュアルページ(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