forked from lix-project/lix
* Provide a minimal /etc/passwd in the chroot to keep some builders
happy.
This commit is contained in:
parent
7c54f1603f
commit
5a569509b4
|
@ -1673,6 +1673,17 @@ void DerivationGoal::startBuilder()
|
||||||
if (chmod(chrootTmpDir.c_str(), 01777) == -1)
|
if (chmod(chrootTmpDir.c_str(), 01777) == -1)
|
||||||
throw SysError("creating /tmp in the chroot");
|
throw SysError("creating /tmp in the chroot");
|
||||||
|
|
||||||
|
/* Create a /etc/passwd with entries for the build user and
|
||||||
|
the nobody account. The latter is kind of a hack to
|
||||||
|
support Samba-in-QEMU. */
|
||||||
|
createDirs(chrootRootDir + "/etc");
|
||||||
|
|
||||||
|
writeStringToFile(chrootRootDir + "/etc/passwd",
|
||||||
|
(format(
|
||||||
|
"nixbld:x:%1%:65534:Nix build user:/:/noshell\n"
|
||||||
|
"nobody:x:65534:65534:Nobody:/:/noshell\n")
|
||||||
|
% (buildUser.enabled() ? buildUser.getUID() : getuid())).str());
|
||||||
|
|
||||||
/* Bind-mount a user-configurable set of directories from the
|
/* Bind-mount a user-configurable set of directories from the
|
||||||
host file system. The `/dev/pts' directory must be mounted
|
host file system. The `/dev/pts' directory must be mounted
|
||||||
separately so that newly-created pseudo-terminals show
|
separately so that newly-created pseudo-terminals show
|
||||||
|
@ -1770,7 +1781,7 @@ void DerivationGoal::startBuilder()
|
||||||
safe. Also note that setuid() when run as root sets
|
safe. Also note that setuid() when run as root sets
|
||||||
the real, effective and saved UIDs. */
|
the real, effective and saved UIDs. */
|
||||||
if (buildUser.enabled()) {
|
if (buildUser.enabled()) {
|
||||||
printMsg(lvlChatty, format("switching to user `%1%'") % buildUser.getUser());
|
debug(format("switching to user `%1%'") % buildUser.getUser());
|
||||||
|
|
||||||
if (amPrivileged()) {
|
if (amPrivileged()) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue