Hinzufügen eines Benutzers zur Chroot-Umgebung

6440
Neo

Ich habe in meinem Ubuntu ein Chroot-System mit Schroot und Debrootstrap erstellt, das auf minimalem Ubuntu basiert. Allerdings, wenn ich anscheinend keinen neuen Benutzer in diese Chroot-Umgebung aufnehmen kann. Hier ist was passiert.

  1. Ich gebe schroot als root ein und füge einen neuen Benutzer hinzu (versuchte sowohl die Befehle adduser als auch useradd).
  2. Der Benutzername wird in der Datei / etc / passwd aufgelistet und ich kann den neuen Benutzer "su". So weit, ist es gut.
  3. Wenn ich mich von schroot abmelden und wieder in schroot komme, ist der von mir erstellte Benutzer verschwunden !! In / etc / passwd ist dieser Benutzer auch nicht erwähnt.

Wie mache ich den neuen Benutzer dauerhaft?

4
Das hört sich merkwürdig an. Stellen Sie zunächst sicher, dass die Verzeichnisse korrekt sind, sowohl innerhalb der Chroot als auch außerhalb. Führen Sie anschließend nach dem Erstellen des Benutzers "cat / etc / passwd" aus, melden Sie sich ab und "cat" die gleiche Datei an, jetzt mit dem chroot-Verzeichnis. Hat sich das geändert? maxelost vor 13 Jahren 0

2 Antworten auf die Frage

4
Neo

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 den Bereinigungszustand und löscht somit auch den Benutzer. Man kann eine Sitzung mit starten

schroot -c mychroot -b 
Danke für die Idee, aber beachten Sie, dass die Benutzer nach dem Neustart des Systems trotzdem nicht bestehen bleiben. Ich fügte eine Antwort hinzu, die sich damit zu beschäftigen scheint. NIA vor 11 Jahren 0
2
NIA

Actually, there is a better workaround, that I found it schroot FAQ, in section Why is schroot overwriting configuration files in the chroot?

By default, schroot copies over the system NSS databases ('passwd', 'shadow', 'group', 'gshadow', 'services', 'protocols', 'networks', and 'hosts', etc.) into the chroot. The reason for this is that the chroot environment is not a completely separate system, and it copying them over keeps them synchronised. However, this is not always desirable, particularly if installing a package in the chroot creates system users and groups which are not present on the host, since these will disappear next time the databases are copied over.

In short: each time you start a new schroot session, or after host system reboot, schroot grabs /etc/passwd and some other files from you real system and copies them into chroot, thus losing all new users from it. The suggested workaround is described in this FAQ: you can disable copying this files:

  1. Open /etc/schroot/default/nssdatabases (on your real system, of course)
  2. You will see the lis of so called NSS databases, that are copied from real system.
  3. Comment lines passwd, group and shadow, so that the file looks like this:

/etc/schroot/default/nssdatabases

# System databases to copy into the chroot from the host system. # # <database name> #passwd #shadow #group services protocols networks hosts 

Now if you go back inside your chroot and create some users, or install some postgresql etc, new users won't be lost. Even after reboot!