web-dev-qa-db-ja.com

chroot環境へのユーザーの追加

最小限のubuntuに基づいて、schrootとdebrootstrapを使用してUbuntuにchrootシステムを作成しました。ただし、このchroot環境に新しいユーザーを追加できない場合はいつでも。これが何が起こるかです。

  1. Rootとしてschrootを入力し、新しいユーザーを追加します(adduserコマンドとuseraddコマンドの両方を試しました)
  2. ユーザー名は/ etc/passwdファイルにリストされ、新しいユーザーに「su」できます。ここまでは順調ですね。
  3. Schrootからログアウトし、schrootに再入力すると、作成したユーザーが消えてしまいました!!/etc/passwdにもそのユーザーについての言及はありません。

新しいユーザーを永続的にするにはどうすればよいですか?

4
Neo

ああ、私はそれを自分で理解しました。 Schrootには、現在の環境を保持できる「セッション」と呼ばれる機能があります。 「セッション」を作成せずにログアウトするたびに、schrootはすべてをクリーンな状態にするため、ユーザーも削除されます。を使用してセッションを開始できます

schroot -c mychroot -b 
4
Neo

実際には、より良い回避策があります schroot FAQ 、セクションschrootがchrootの設定ファイルを上書きするのはなぜですか?

デフォルトでは、schrootはシステムNSSデータベース(「passwd」、「shadow」、「group」、「gshadow」、「services」、「protocols」、「networks」、「hosts」など)をchrootにコピーします。 。これは、chroot環境が完全に独立したシステムではなく、コピーして同期を維持するためです。ただし、これは必ずしも望ましいとは限りません特に、chrootにパッケージをインストールすると、ホストに存在しないシステムユーザーとグループが作成される場合、これらは次にデータベースがコピーされるときに消えます

要するに:新しいschrootセッションを開始するたびに、またはホストシステムを再起動した後、schrootは/etc/passwdと他のいくつかのファイルを実際に取得しますシステムとそれらをchrootにコピーするため、すべての新規ユーザーがchrootから失われます。推奨される回避策は、このFAQに記載されています。このファイルのコピーを無効にすることができます。

  1. /etc/schroot/default/nssdatabasesを開きます(もちろん、実際のシステムで)
  2. 実際のシステムからコピーされた、いわゆる NSSデータベース のlisが表示されます。
  3. コメント行passwdgroup、およびshadowで、ファイルは次のようになります。

/ etc/schroot/default/nssdatabases

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

これで、chroot内に戻ってユーザーを作成したり、postgresqlなどをインストールしたりしても、新しいユーザーが失われることはありません。再起動後も!

2
NIA