Eelco Dolstra
d3fe6ab024
* Also for convenience, change the ownership of the build output even
...
in case of failure.
2006-12-08 00:19:50 +00:00
Eelco Dolstra
096194ab29
* Remove ancient terminology.
2006-12-07 23:58:36 +00:00
Eelco Dolstra
6833e8bbe8
* When keeping the temporary build directory (-K), change the owner
...
back to the Nix account.
2006-12-07 23:27:40 +00:00
Eelco Dolstra
2819eb36a4
* Be less verbose.
2006-12-07 21:43:35 +00:00
Eelco Dolstra
c3286ec020
* Don't count on the Pid deconstructor to kill the child process,
...
since if we're running a build user in non-root mode, we can't. Let
the setuid helper do it.
2006-12-07 17:52:58 +00:00
Eelco Dolstra
f76fdb6d42
* If not running as root, let the setuid helper kill the build user's
...
processes before and after the build.
2006-12-07 16:33:31 +00:00
Eelco Dolstra
ec23ecc64d
* In the garbage collector, if deleting a path fails, try to fix its
...
ownership, then try again.
2006-12-07 15:54:52 +00:00
Eelco Dolstra
a0a43c3206
* When not running as root, call the setuid helper to change the
...
ownership of the build result after the build.
2006-12-07 15:18:14 +00:00
Eelco Dolstra
6a07ff1ec0
* Change the ownership of store paths to the Nix account before
...
deleting them using the setuid helper.
2006-12-07 14:14:35 +00:00
Eelco Dolstra
7d8cf316ee
* Pass the actual build user to the setuid helper.
2006-12-07 11:27:32 +00:00
Eelco Dolstra
a45c498e4e
* If Nix is not running as root, call the setuid helper to start the
...
builder under the desired build user.
2006-12-07 00:42:30 +00:00
Eelco Dolstra
813a7c65c9
* Sanity check.
2006-12-07 00:19:27 +00:00
Eelco Dolstra
6a8e60913a
* Move killUser() to libutil so that the setuid helper can use it.
2006-12-07 00:16:07 +00:00
Eelco Dolstra
6e5ec1029a
* Get rid of `build-users'. We'll just take all the members of
...
`build-users-group'. This makes configuration easier: you can just
add users in /etc/group.
2006-12-06 20:00:15 +00:00
Eelco Dolstra
9f0efa6611
* 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).
2006-12-06 01:24:02 +00:00
Eelco Dolstra
2b558843a2
* Be less chatty.
2006-12-05 19:01:19 +00:00
Eelco Dolstra
44cad9630f
* Urgh. Do setgid() before setuid(), because the semantics of setgid()
...
changes completely depending on whether you're root...
2006-12-05 18:28:15 +00:00
Eelco Dolstra
4c1c37d0b6
* FreeBSD returns ESRCH when there are no processes to kill.
2006-12-05 18:07:46 +00:00
Eelco Dolstra
62b0497c0f
* Better message.
2006-12-05 16:17:01 +00:00
Eelco Dolstra
a9c4f66cfb
* Allow unprivileged users to run the garbage collector and to do
...
`nix-store --delete'. But unprivileged users are not allowed to
ignore liveness.
* `nix-store --delete --ignore-liveness': ignore the runtime roots as
well.
2006-12-05 02:18:46 +00:00
Eelco Dolstra
29cf434a35
* The determination of the root set should be made by the privileged
...
process, so forward the operation.
* Spam the user about GC misconfigurations (NIX-71).
* findRoots: skip all roots that are unreadable - the warnings with
which we spam the user should be enough.
2006-12-05 01:31:45 +00:00
Eelco Dolstra
8623256f48
* findRoots: return a map from the symlink (outside of the store) to
...
the store path (inside the store).
2006-12-05 00:48:36 +00:00
Eelco Dolstra
d27a73b1a9
* In addPermRoot, check that the root that we just registered can be
...
found by the garbage collector. This addresses NIX-71 and is a
particular concern in multi-user stores.
2006-12-05 00:34:42 +00:00
Eelco Dolstra
74033a844f
* Add indirect root registration to the protocol so that unprivileged
...
processes can register indirect roots. Of course, there is still
the problem that the garbage collector can only read the targets of
the indirect roots when it's running as root...
2006-12-04 23:29:16 +00:00
Eelco Dolstra
7751160e9f
* Don't redirect stderr.
2006-12-04 19:10:23 +00:00
Eelco Dolstra
40c3529909
* Handle exceptions and stderr for all protocol functions.
...
* SIGIO -> SIGPOLL (POSIX calls it that).
* Use sigaction instead of signal to register the SIGPOLL handler.
Sigaction is better defined, and a handler registered with signal
appears not to interrupt fcntl(..., F_SETLKW, ...), which is bad.
2006-12-04 17:55:14 +00:00
Eelco Dolstra
0130ef88ea
* Daemon mode (`nix-worker --daemon'). Clients connect to the server
...
via the Unix domain socket in /nix/var/nix/daemon.socket. The
server forks a worker process per connection.
* readString(): use the heap, not the stack.
* Some protocol fixes.
2006-12-04 17:17:13 +00:00
Eelco Dolstra
4740baf3a6
* When NIX_REMOTE=daemon, connect to /nix/var/nix/daemon.socket
...
instead of forking a worker.
2006-12-04 14:21:39 +00:00
Eelco Dolstra
f5f0cf423f
* Refactoring.
2006-12-04 13:28:14 +00:00
Eelco Dolstra
052b6fb149
* Pass the verbosity level to the worker.
2006-12-04 13:15:29 +00:00
Eelco Dolstra
1e16d20655
* Install the worker in bindir, not libexecdir.
...
* Allow the worker path to be overriden through the NIX_WORKER
environment variable.
2006-12-04 13:09:16 +00:00
Eelco Dolstra
f4279bcde0
* Don't run setuid root when build-users is empty.
...
* Send startup errors to the client.
2006-12-03 16:25:19 +00:00
Eelco Dolstra
35247c4c9f
* Removed `build-allow-root'.
...
* Added `build-users-group', the group under which builds are to be
performed.
* Check that /nix/store has 1775 permission and is owner by the
build-users-group.
2006-12-03 15:32:38 +00:00
Eelco Dolstra
4251f94b32
* Use a Unix domain socket instead of pipes.
2006-12-03 02:36:44 +00:00
Eelco Dolstra
8c76df93e6
* Better error message if the worker doesn't start.
2006-12-03 02:22:04 +00:00
Eelco Dolstra
7951c3c546
* Some hackery to propagate the worker's stderr and exceptions to the
...
client.
2006-12-03 02:08:13 +00:00
Eelco Dolstra
e25fad691a
* Move addTempRoot() to the store API, and add another function
...
syncWithGC() to allow clients to register GC roots without needing
write access to the global roots directory or the GC lock.
2006-12-02 16:41:36 +00:00
Eelco Dolstra
9c9cdb06d0
* Remove SwitchToOriginalUser, we're not going to need it anymore.
2006-12-02 14:34:14 +00:00
Eelco Dolstra
8ba5d32769
* Remove queryPathHash().
...
* Help for nix-worker.
2006-12-02 14:27:24 +00:00
Eelco Dolstra
fcd9900d74
* Replace read-only calls to addTextToStore.
2006-12-01 21:00:39 +00:00
Eelco Dolstra
a824d58b56
* Merge addToStore and addToStoreFixed.
...
* addToStore now adds unconditionally, it doesn't use readOnlyMode.
Read-only operation is up to the caller (who can call
computeStorePathForPath).
2006-12-01 20:51:18 +00:00
Eelco Dolstra
b0d8e05be1
* More operations.
...
* addToStore() and friends: don't do a round-trip to the worker if
we're only interested in the path (i.e., in read-only mode).
2006-12-01 18:00:01 +00:00
Eelco Dolstra
0565b5f2b3
* More remote operations.
...
* Added new operation hasSubstitutes(), which is more efficient than
querySubstitutes().size() > 0.
2006-11-30 22:43:55 +00:00
Eelco Dolstra
aac547a8b3
* Doh.
2006-11-30 21:32:46 +00:00
Eelco Dolstra
0263279071
* More operations.
2006-11-30 20:45:20 +00:00
Eelco Dolstra
a711689368
* First remote operation: isValidPath().
2006-11-30 20:13:59 +00:00
Eelco Dolstra
765bdfe542
* When NIX_REMOTE is set to "slave", fork off nix-worker in slave
...
mode. Presumably nix-worker would be setuid to the Nix store user.
The worker performs all operations on the Nix store and database, so
the caller can be completely unprivileged.
This is already much more secure than the old setuid scheme, since
the worker doesn't need to do Nix expression evaluation and so on.
Most importantly, this means that it doesn't need to access any user
files, with all resulting security risks; it only performs pure
store operations.
Once this works, it is easy to move to a daemon model that forks off
a worker for connections established through a Unix domain socket.
That would be even more secure.
2006-11-30 19:54:43 +00:00
Eelco Dolstra
40b3f64b55
* Skeleton of the privileged worker program.
...
* Some refactoring: put the NAR archive integer/string serialisation
code in a separate file so it can be reused by the worker protocol
implementation.
2006-11-30 19:19:59 +00:00
Eelco Dolstra
9adc074dc3
* Oops.
2006-11-30 18:35:50 +00:00
Eelco Dolstra
9cf1948993
* Skeleton of remote store implementation.
2006-11-30 18:35:36 +00:00