Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2006-12-07 | * If not running as root, let the setuid helper kill the build user's | Eelco Dolstra | 1 | -27/+36 | |
processes before and after the build. | |||||
2006-12-07 | * In the garbage collector, if deleting a path fails, try to fix its | Eelco Dolstra | 3 | -6/+31 | |
ownership, then try again. | |||||
2006-12-07 | * When not running as root, call the setuid helper to change the | Eelco Dolstra | 2 | -7/+13 | |
ownership of the build result after the build. | |||||
2006-12-07 | * Change the ownership of store paths to the Nix account before | Eelco Dolstra | 1 | -4/+56 | |
deleting them using the setuid helper. | |||||
2006-12-07 | * Pass the actual build user to the setuid helper. | Eelco Dolstra | 1 | -22/+10 | |
2006-12-07 | * If Nix is not running as root, call the setuid helper to start the | Eelco Dolstra | 1 | -21/+37 | |
builder under the desired build user. | |||||
2006-12-07 | * Sanity check. | Eelco Dolstra | 1 | -1/+7 | |
2006-12-07 | * Move killUser() to libutil so that the setuid helper can use it. | Eelco Dolstra | 1 | -48/+27 | |
2006-12-06 | * Get rid of `build-users'. We'll just take all the members of | Eelco Dolstra | 1 | -35/+53 | |
`build-users-group'. This makes configuration easier: you can just add users in /etc/group. | |||||
2006-12-06 | * Start of the setuid helper (the program that performs the operations | Eelco Dolstra | 1 | -3/+4 | |
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-05 | * Be less chatty. | Eelco Dolstra | 1 | -2/+2 | |
2006-12-05 | * Urgh. Do setgid() before setuid(), because the semantics of setgid() | Eelco Dolstra | 1 | -4/+4 | |
changes completely depending on whether you're root... | |||||
2006-12-05 | * FreeBSD returns ESRCH when there are no processes to kill. | Eelco Dolstra | 1 | -4/+8 | |
2006-12-05 | * Better message. | Eelco Dolstra | 1 | -1/+1 | |
2006-12-05 | * Allow unprivileged users to run the garbage collector and to do | Eelco Dolstra | 10 | -49/+81 | |
`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 | * The determination of the root set should be made by the privileged | Eelco Dolstra | 6 | -60/+124 | |
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 | * findRoots: return a map from the symlink (outside of the store) to | Eelco Dolstra | 1 | -11/+16 | |
the store path (inside the store). | |||||
2006-12-05 | * In addPermRoot, check that the root that we just registered can be | Eelco Dolstra | 1 | -17/+41 | |
found by the garbage collector. This addresses NIX-71 and is a particular concern in multi-user stores. | |||||
2006-12-04 | * Add indirect root registration to the protocol so that unprivileged | Eelco Dolstra | 6 | -6/+32 | |
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 | * Don't redirect stderr. | Eelco Dolstra | 1 | -6/+0 | |
2006-12-04 | * Handle exceptions and stderr for all protocol functions. | Eelco Dolstra | 1 | -0/+10 | |
* 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 | * Daemon mode (`nix-worker --daemon'). Clients connect to the server | Eelco Dolstra | 1 | -1/+2 | |
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 | * When NIX_REMOTE=daemon, connect to /nix/var/nix/daemon.socket | Eelco Dolstra | 3 | -8/+37 | |
instead of forking a worker. | |||||
2006-12-04 | * Refactoring. | Eelco Dolstra | 3 | -17/+33 | |
2006-12-04 | * Pass the verbosity level to the worker. | Eelco Dolstra | 1 | -2/+8 | |
2006-12-04 | * Install the worker in bindir, not libexecdir. | Eelco Dolstra | 3 | -1/+8 | |
* Allow the worker path to be overriden through the NIX_WORKER environment variable. | |||||
2006-12-03 | * Don't run setuid root when build-users is empty. | Eelco Dolstra | 1 | -0/+1 | |
* Send startup errors to the client. | |||||
2006-12-03 | * Removed `build-allow-root'. | Eelco Dolstra | 2 | -21/+29 | |
* 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 | * Use a Unix domain socket instead of pipes. | Eelco Dolstra | 2 | -15/+18 | |
2006-12-03 | * Better error message if the worker doesn't start. | Eelco Dolstra | 1 | -4/+8 | |
2006-12-03 | * Some hackery to propagate the worker's stderr and exceptions to the | Eelco Dolstra | 4 | -8/+44 | |
client. | |||||
2006-12-02 | * Move addTempRoot() to the store API, and add another function | Eelco Dolstra | 8 | -13/+64 | |
syncWithGC() to allow clients to register GC roots without needing write access to the global roots directory or the GC lock. | |||||
2006-12-02 | * Remove SwitchToOriginalUser, we're not going to need it anymore. | Eelco Dolstra | 3 | -20/+4 | |
2006-12-02 | * Remove queryPathHash(). | Eelco Dolstra | 1 | -1/+4 | |
* Help for nix-worker. | |||||
2006-12-01 | * Replace read-only calls to addTextToStore. | Eelco Dolstra | 1 | -2/+6 | |
2006-12-01 | * Merge addToStore and addToStoreFixed. | Eelco Dolstra | 7 | -80/+30 | |
* addToStore now adds unconditionally, it doesn't use readOnlyMode. Read-only operation is up to the caller (who can call computeStorePathForPath). | |||||
2006-12-01 | * More operations. | Eelco Dolstra | 4 | -31/+95 | |
* 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-11-30 | * More remote operations. | Eelco Dolstra | 8 | -33/+63 | |
* Added new operation hasSubstitutes(), which is more efficient than querySubstitutes().size() > 0. | |||||
2006-11-30 | * Doh. | Eelco Dolstra | 1 | -1/+1 | |
2006-11-30 | * More operations. | Eelco Dolstra | 2 | -8/+23 | |
2006-11-30 | * First remote operation: isValidPath(). | Eelco Dolstra | 3 | -5/+32 | |
2006-11-30 | * When NIX_REMOTE is set to "slave", fork off nix-worker in slave | Eelco Dolstra | 3 | -1/+65 | |
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 | * Skeleton of the privileged worker program. | Eelco Dolstra | 1 | -2/+2 | |
* 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 | * Oops. | Eelco Dolstra | 2 | -0/+135 | |
2006-11-30 | * Skeleton of remote store implementation. | Eelco Dolstra | 3 | -5/+13 | |
2006-11-30 | * Put building in the store API. | Eelco Dolstra | 7 | -37/+24 | |
2006-11-30 | * Refactoring. There is now an abstract interface class StoreAPI | Eelco Dolstra | 10 | -310/+428 | |
containing functions that operate on the Nix store. One implementation is LocalStore, which operates on the Nix store directly. The next step, to enable secure multi-user Nix, is to create a different implementation RemoteStore that talks to a privileged daemon process that uses LocalStore to perform the actual operations. | |||||
2006-11-24 | * Doh! Path sizes need to be computed recursively of course. | Eelco Dolstra | 1 | -6/+2 | |
(NIX-70) | |||||
2006-11-24 | * Dead files. | Eelco Dolstra | 2 | -12/+0 | |
2006-11-13 | * Remove the undocumented `noscan' feature. It's no longer necessary | Eelco Dolstra | 1 | -15/+12 | |
now that reference scanning is sufficiently streamy. |