![Benutzer zur Chroot-Umgebung hinzufügen](https://rvso.com/image/1263752/Benutzer%20zur%20Chroot-Umgebung%20hinzuf%C3%BCgen.png)
Ich habe in meinem Ubuntu ein Chroot-System mit Schroot und Debrootstrap erstellt, das auf minimalem Ubuntu basiert. Allerdings kann ich scheinbar keinen neuen Benutzer zu dieser Chroot-Umgebung hinzufügen. Folgendes passiert.
- Ich gebe schroot als Root ein und füge einen neuen Benutzer hinzu. (Habe sowohl die Befehle adduser als auch useradd ausprobiert)
- Der Benutzername wird in der Datei /etc/passwd aufgelistet und ich kann mich per „su“ beim neuen Benutzer anmelden. So weit, so gut.
- Wenn ich mich von Schroot abmelde und erneut in Schroot einlogge, ist der von mir erstellte Benutzer verschwunden!! Auch in /etc/passwd wird dieser Benutzer nicht erwähnt.
Wie mache ich den neuen Benutzer dauerhaft?
Antwort1
Oh, ich habe es selbst herausgefunden. Schroot hat eine Funktion namens „Sitzungen“, mit der die aktuelle Umgebung beibehalten werden kann. Jedes Mal, wenn man sich abmeldet, ohne eine „Sitzung“ zu erstellen, bringt Schroot alles in einen sauberen Zustand und löscht daher auch den Benutzer. Man kann eine Sitzung starten mit
schroot -c mychroot -b
Antwort2
Eigentlich gibt es einen besseren Workaround, den ich gefunden habeHäufig gestellte Fragen zu schroot, im AbschnittWarum überschreibt Schroot Konfigurationsdateien im Chroot?
Standardmäßig kopiert Schroot die NSS-Datenbanken des Systems ('passwd', 'shadow', 'group', 'gshadow', 'services', 'protocols', 'networks' und 'hosts' usw.) in die Chroot-Umgebung. Der Grund dafür ist, dass die Chroot-Umgebung kein vollständig separates System ist und durch das Kopieren die Datenbanken synchronisiert bleiben. Dies ist jedoch nicht immer wünschenswert. insbesondere wenn bei der Installation eines Pakets im Chroot Systembenutzer und -gruppen erstellt werden, die auf dem Host nicht vorhanden sind, da diese beim nächsten Kopieren der Datenbanken verschwinden..
Zusamenfassend:jedes Mal, wenn Sie eine neue Schroot-Sitzung starten oder nach einem Neustart des Hostsystems, holt sich Schroot /etc/passwd
einige andere Dateien von Ihrem realen System und kopiert sie in Chroot, wodurch alle neuen Benutzer verloren gehen. Die vorgeschlagene Problemumgehung wird in dieser FAQ beschrieben: Sie können das Kopieren dieser Dateien deaktivieren:
- Öffnen
/etc/schroot/default/nssdatabases
(natürlich auf Ihrem realen System) - Sie sehen die Liste der sog.NSS-Datenbanken, die vom realen System kopiert werden.
- Kommentieren Sie die Zeilen
passwd
,group
undshadow
, sodass die Datei folgendermaßen aussieht:
/etc/schroot/default/nssdatabases
# System databases to copy into the chroot from the host system.
#
# <database name>
#passwd
#shadow
#group
services
protocols
networks
hosts
Wenn Sie jetzt in Ihr Chroot zurückkehren und einige Benutzer erstellen oder PostgreSQL usw. installieren, gehen neue Benutzer nicht verloren. Auch nicht nach einem Neustart!