* Start of the setuid helper (the program that performs the operations
that have to be done as root: running builders under different uids, changing ownership of build results, and deleting paths in the store with the wrong ownership).
This commit is contained in:
parent
2b558843a2
commit
9f0efa6611
5 changed files with 18 additions and 4 deletions
|
@ -271,6 +271,7 @@ AC_CONFIG_FILES([Makefile
|
||||||
src/nix-instantiate/Makefile
|
src/nix-instantiate/Makefile
|
||||||
src/nix-env/Makefile
|
src/nix-env/Makefile
|
||||||
src/nix-worker/Makefile
|
src/nix-worker/Makefile
|
||||||
|
src/nix-setuid-helper/Makefile
|
||||||
src/nix-log2xml/Makefile
|
src/nix-log2xml/Makefile
|
||||||
src/bsdiff-4.3/Makefile
|
src/bsdiff-4.3/Makefile
|
||||||
scripts/Makefile
|
scripts/Makefile
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
SUBDIRS = bin2c boost libutil libstore libmain nix-store nix-hash \
|
SUBDIRS = bin2c boost libutil libstore libmain nix-store nix-hash \
|
||||||
libexpr nix-instantiate nix-env nix-worker nix-log2xml bsdiff-4.3
|
libexpr nix-instantiate nix-env nix-worker nix-setuid-helper \
|
||||||
|
nix-log2xml bsdiff-4.3
|
||||||
|
|
||||||
EXTRA_DIST = aterm-helper.pl
|
EXTRA_DIST = aterm-helper.pl
|
||||||
|
|
|
@ -454,11 +454,12 @@ static void killUser(uid_t uid)
|
||||||
if (kill(-1, SIGKILL) == 0) break;
|
if (kill(-1, SIGKILL) == 0) break;
|
||||||
if (errno == ESRCH) break; /* no more processes */
|
if (errno == ESRCH) break; /* no more processes */
|
||||||
if (errno != EINTR)
|
if (errno != EINTR)
|
||||||
throw SysError(format("cannot kill processes for UID `%1%'") % uid);
|
throw SysError(format("cannot kill processes for uid `%1%'") % uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (std::exception & e) {
|
} catch (std::exception & e) {
|
||||||
std::cerr << format("killing build users: %1%\n") % e.what();
|
std::cerr << format("killing processes beloging to uid `%1%': %1%\n")
|
||||||
|
% uid % e.what();
|
||||||
quickExit(1);
|
quickExit(1);
|
||||||
}
|
}
|
||||||
quickExit(0);
|
quickExit(0);
|
||||||
|
@ -466,7 +467,7 @@ static void killUser(uid_t uid)
|
||||||
|
|
||||||
/* parent */
|
/* parent */
|
||||||
if (pid.wait(true) != 0)
|
if (pid.wait(true) != 0)
|
||||||
throw Error(format("cannot kill processes for UID `%1%'") % uid);
|
throw Error(format("cannot kill processes for uid `%1%'") % uid);
|
||||||
|
|
||||||
/* !!! We should really do some check to make sure that there are
|
/* !!! We should really do some check to make sure that there are
|
||||||
no processes left running under `uid', but there is no portable
|
no processes left running under `uid', but there is no portable
|
||||||
|
|
8
src/nix-setuid-helper/Makefile.am
Normal file
8
src/nix-setuid-helper/Makefile.am
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
libexec_PROGRAMS = nix-setuid-helper
|
||||||
|
|
||||||
|
nix_setuid_helper_SOURCES = main.cc
|
||||||
|
nix_setuid_helper_LDADD = ../libutil/libutil.la \
|
||||||
|
../boost/format/libformat.la ${aterm_lib}
|
||||||
|
|
||||||
|
AM_CXXFLAGS = \
|
||||||
|
-I$(srcdir)/.. $(aterm_include) -I$(srcdir)/../libutil
|
3
src/nix-setuid-helper/main.cc
Normal file
3
src/nix-setuid-helper/main.cc
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
int main(int argc, char * * argv)
|
||||||
|
{
|
||||||
|
}
|
Loading…
Reference in a new issue