Добавление пользователя в среду chroot

6392
Neo

Я создал систему chroot в своем Ubuntu с использованием schroot и debrootstrap, основанную на минимальном Ubuntu. Однако всякий раз, когда я не могу добавить нового пользователя в эту среду chroot. Вот что происходит.

  1. Я ввожу schroot как root и добавляю нового пользователя. (Пробовал команды adduser и useradd)
  2. Имя пользователя отображается в файле / etc / passwd, и я могу 'su' войти в нового пользователя. Все идет нормально.
  3. Когда я выхожу из schroot и снова вхожу в schroot, созданный мною пользователь исчез !! Также нет упоминания об этом пользователе в / etc / passwd.

Как сделать нового пользователя постоянным?

4
Это звучит странно. Сначала постарайтесь убедиться, что каталоги верны, как внутри chroot, так и снаружи. Затем выполните `cat / etc / passwd` после создания пользователя, затем выйдите из системы и` cat` того же файла, теперь с префиксом каталога chroot. Это изменилось? maxelost 13 лет назад 0

2 ответа на вопрос

4
Neo

О, я понял это сам. Schroot имеет функцию, называемую «сессии», где текущая среда может быть сохранена. Каждый раз, когда пользователь выходит из системы без создания «сеанса», schroot приводит все в чистое состояние и, следовательно, также удаляет пользователя. Можно начать сессию, используя

schroot -c mychroot -b 
Спасибо за идею, но учтите, что в любом случае пользователи не сохранятся после перезагрузки системы. Я добавил ответ, который, кажется, с этим справился. NIA 11 лет назад 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!