將使用者新增至 chroot 環境

將使用者新增至 chroot 環境

我在 Ubuntu 中使用 schroot 和 debrootstrap 建立了一個基於最小 ubuntu 的 chroot 系統。然而,每當我似乎無法將新用戶新增到這個 chroot 環境中時。這是發生的事情。

  1. 我以 root 身分輸入 schroot 並新增一個新使用者。
  2. 用戶名列在 /etc/passwd 檔案中,我可以「su」進入新用戶。到目前為止,一切都很好。
  3. 當我登出 schroot 並重新進入 schroot 時,我創建的用戶消失了! /etc/passwd 中也沒有提及該用戶。

如何讓新用戶成為永久用戶?

答案1

哦,我自己想出來了。 Schroot 有一個稱為「會話」的功能,可以保留目前環境。每當使用者在未建立「會話」的情況下註銷時,schroot 都會將所有內容恢復為乾淨狀態,從而也會刪除該使用者。可以使用以下方式開始會話

schroot -c mychroot -b 

答案2

其實我找到了一個更好的解決方法施魯特常見問題解答,在部分為什麼 schroot 會覆蓋 chroot 中的設定檔?

預設情況下,schroot 將系統 NSS 資料庫(「passwd」、「shadow」、「group」、「gshadow」、「services」、「protocols」、「networks」和「hosts」等)複製到 chroot 中。原因是 chroot 環境不是一個完全獨立的系統,它將它們複製過來使它們保持同步。然而,這並不總是可取的, 特別是如果在 chroot 中安裝軟體包會建立主機上不存在的系統使用者和群組,因為下次複製資料庫時這些將消失

簡而言之:每次啟動新的 schroot 會話時,或者主機系統重新啟動後,schroot 都會/etc/passwd從您的真實系統中獲取一些其他檔案並將它們複製到 chroot 中,從而失去其中的所有新使用者。此常見問題中描述了建議的解決方法:您可以停用複製此文件:

  1. 打開/etc/schroot/default/nssdatabases(當然在你的真實系統上)
  2. 你會看到所謂的列表NSS資料庫,從真實系統複製。
  3. 註解行passwdgroupshadow,讓文件看起來像這樣:

/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 等,新用戶將不會遺失。即使重啟後!

相關內容