最小限のubuntuに基づいて、schrootとdebrootstrapを使用してUbuntuにchrootシステムを作成しました。ただし、このchroot環境に新しいユーザーを追加できない場合はいつでも。これが何が起こるかです。
新しいユーザーを永続的にするにはどうすればよいですか?
ああ、私はそれを自分で理解しました。 Schrootには、現在の環境を保持できる「セッション」と呼ばれる機能があります。 「セッション」を作成せずにログアウトするたびに、schrootはすべてをクリーンな状態にするため、ユーザーも削除されます。を使用してセッションを開始できます
schroot -c mychroot -b
実際には、より良い回避策があります schroot FAQ 、セクションschrootがchrootの設定ファイルを上書きするのはなぜですか?
デフォルトでは、schrootはシステムNSSデータベース(「passwd」、「shadow」、「group」、「gshadow」、「services」、「protocols」、「networks」、「hosts」など)をchrootにコピーします。 。これは、chroot環境が完全に独立したシステムではなく、コピーして同期を維持するためです。ただし、これは必ずしも望ましいとは限りません特に、chrootにパッケージをインストールすると、ホストに存在しないシステムユーザーとグループが作成される場合、これらは次にデータベースがコピーされるときに消えます。
要するに:新しいschrootセッションを開始するたびに、またはホストシステムを再起動した後、schrootは/etc/passwd
と他のいくつかのファイルを実際に取得しますシステムとそれらをchrootにコピーするため、すべての新規ユーザーがchrootから失われます。推奨される回避策は、このFAQに記載されています。このファイルのコピーを無効にすることができます。
/etc/schroot/default/nssdatabases
を開きます(もちろん、実際のシステムで)passwd
、group
、およびshadow
で、ファイルは次のようになります。# System databases to copy into the chroot from the Host system.
#
# <database name>
#passwd
#shadow
#group
services
protocols
networks
hosts
これで、chroot内に戻ってユーザーを作成したり、postgresqlなどをインストールしたりしても、新しいユーザーが失われることはありません。再起動後も!