Добавление пользователя в среду chroot
Я создал систему chroot в своем Ubuntu с использованием schroot и debrootstrap, основанную на минимальном Ubuntu. Однако всякий раз, когда я не могу добавить нового пользователя в эту среду chroot. Вот что происходит.
- Я ввожу schroot как root и добавляю нового пользователя (пробовал команды adduser и useradd)
- Имя пользователя указывается в файле /etc/passwd, и я могу 'su' войти в нового пользователя. Все идет нормально.
- Когда я выхожу из schroot и снова вхожу в schroot, созданный мною пользователь исчез!! Также нет упоминания об этом пользователе в /etc/passwd.
Как сделать нового пользователя постоянным?
2 ответа
О, я понял это сам. Schroot имеет функцию, называемую "сессии", где текущая среда может быть сохранена. Каждый раз, когда пользователь выходит из системы без создания "сеанса", schroot приводит все в чистое состояние и, следовательно, также удаляет пользователя. Можно начать сеанс, используя
schroot -c mychroot -b
На самом деле, есть лучший обходной путь, я нашел это FAQ по schroot, в разделе Почему schroot перезаписывает файлы конфигурации в chroot?
По умолчанию schroot копирует системные базы данных NSS ("passwd", "shadow", "group", "gshadow", "services", "protocol", "networks" и "hosts" и т. Д.) В chroot, Причина этого заключается в том, что среда chroot не является полностью отдельной системой, и ее копирование сохраняет их синхронизированными. Однако это не всегда желательно, особенно если при установке пакета в chroot создаются системные пользователи и группы, которых нет на хосте, поскольку они исчезнут при следующем копировании баз данных.
Короче говоря: каждый раз, когда вы начинаете новый сеанс schroot или после перезагрузки хост-системы, схруот захватывает /etc/passwd
и некоторые другие файлы из вашей реальной системы и копируют их в chroot, таким образом теряя всех новых пользователей из него. Предложенный обходной путь описан в этом FAQ: вы можете отключить копирование этих файлов:
- открыто
/etc/schroot/default/nssdatabases
(в вашей реальной системе, конечно) - Вы увидите список так называемых баз данных NSS, которые скопированы из реальной системы.
- Строки комментариев
passwd
,group
а такжеshadow
, так что файл выглядит так:
/ и т.д. / schroot / по умолчанию / nssdatabases
# System databases to copy into the chroot from the host system.
#
# <database name>
#passwd
#shadow
#group
services
protocols
networks
hosts
Теперь, если вы вернетесь в свой chroot и создадите несколько пользователей, или установите несколько postgresql и т. Д., Новые пользователи не будут потеряны. Даже после перезагрузки!