Ein LXC-Container hat seinen eigenen Benutzernamen und seine eigenen Passwortdefinitionen. Das Passwort für ein LXC-Konto kann bei Bedarf geändert werden, unabhängig davon, ob der Container ausgeführt wird oder nicht.
geeklab login: admin Password: Login incorrect Oracle Linux Server 7.1 Kernel 3.8.13-118.19.3.el6uek.x86_64 on an x86_64
Zurücksetzen des vergessenen LXC-Container-Benutzerkennworts
Verbinden Sie sich als Root-Benutzer mit einem laufenden Container
Wenn der Container ausgeführt wird, kann das Passwort zurückgesetzt werden, ohne dass der Container gestoppt werden muss.
# lxc-attach -n Oracle7
[root@Oracle7 ~]# passwd Changing password for user root. New password: BAD PASSWORD: The password contains the user name in some form Retype new password: passwd: all authentication tokens updated successfully. [root@Oracle7 ~]#
Der lxc-attach Der Befehl startet einen neuen Prozess in einem laufenden Container. Der neue Prozess wird mit den Anmeldeinformationen des Benutzers ausgeführt, der den Befehl lxc-attach ausführt. Hier startet der Root-Benutzer eine normale Shell-Umgebung. Sobald die Shell gestartet ist, verwenden Sie einfach wie gewohnt den üblichen passwd-Befehl.
Entfernen Sie das Passwort, um die Benutzeranmeldung und das normale Zurücksetzen zu ermöglichen. Auf die LXC-Containerdateien kann direkt über die Host-Befehlszeile zugegriffen werden. Durch Bearbeiten der Datei /etc/passwd im LCX-Container kann die Passwortanforderung für den Benutzer entfernt werden, um das Konto für die passwortlose Anmeldung zu öffnen.
Das erste Ziel besteht darin, den LXC-Containerpfad für die zu ändernde Datei zu finden. Der LXC-Container muss angehalten werden, um dieses Verfahren durchzuführen.
Schritt Nr. 1:Suchen Sie den Speicherort der Containerdateien
# lxc-config -l lxc.default_config lxc.lxcpath lxc.bdev.lvm.vg lxc.bdev.lvm.thin_pool lxc.bdev.zfs.root
# lxc-config lxc-lxcpath /container
Finden Sie zuerst heraus, welche LXC-Attribute verfügbar sind. Verwenden Sie das lxc-lxcpath-Attribut, um die Containerdateien zu finden:
Schritt Nr. 2:Wo werden die Containerdateien vom LXC-Host gemountet?
# mount | grep container /dev/sdb on /container type btrfs (rw)
Hier sind die LXC-Containerdateien über das /container-Verzeichnis zugänglich.
Schritt #3:Finden Sie das Root-Dateisystem des Containers
# cd /container/ # ls lxc-monitord.log Oracle5U9 Oracle7 Orcle5U9 # cd Oracle7/ # ls config Oracle7.log rootfs rootfs.dev # cd rootfs # ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
Schritt #4:Entfernen Sie das zweite Feld für den problematischen Benutzer in etc/fstab
# grep oracle etc/passwd oracle:x:1000:1000::/home/oracle:/bin/bash # vi etc/passwd
Entfernen Sie alle Inhalte zwischen den ersten beiden Doppelpunktzeichen (:) für den Benutzer von Interesse
# grep oracle etc/passwd oracle::1000:1000::/home/oracle:/bin/bash
Das Container-Root-Dateisystem als Chroot-Gefängnis verwenden und das Passwort normal ändern
Suchen Sie das Root-Dateisystem des LXC-Containers wie zuvor gezeigt. Verwenden Sie dann den Befehl chroot(1), um einen Ausführungskontext in den Container einzugeben. Als root ändern Sie das Passwort ganz normal.
Der LXC-Container muss angehalten werden, um dieses Verfahren durchzuführen.
# chroot /container/Oracle7/rootfs/ passwd oracle Changing password for user oracle. New password: BAD PASSWORD: The password contains the user name in some form Retype new password: passwd: all authentication tokens updated successfully.
Starten Sie dann den Container und erlauben Sie dem Benutzer, sich normal anzumelden.