diff -up ./client/cjdroute2.c.genconf ./client/cjdroute2.c --- ./client/cjdroute2.c.genconf 2019-05-02 04:02:32.000000000 -0400 +++ ./client/cjdroute2.c 2019-05-08 12:14:53.146838389 -0400 @@ -336,7 +336,7 @@ static int genconf(struct Random* rand, " // and ETHInterface will be unable to hot-add new interfaces\n" " // Use { \"setuser\": 0 } to disable.\n" " // Default: enabled with keepNetAdmin\n" - " { \"setuser\": \"nobody\", \"keepNetAdmin\": 1 },\n" + " { \"setuser\": \"cjdns\", \"keepNetAdmin\": 1 },\n" "\n" " // Chroot changes the filesystem root directory which cjdns sees, blocking it\n" " // from accessing files outside of the chroot sandbox, if the user does not\n" @@ -348,7 +348,7 @@ static int genconf(struct Random* rand, } else { printf(" // Default: enabled (using \"/var/run\")\n" - " { \"chroot\": \"/var/run/\" },\n"); + " { \"chroot\": \"/var/empty/cjdns\" },\n"); } printf("\n" " // Nofiles is a deprecated security feature which prevents cjdns from opening\n" @@ -695,11 +695,12 @@ int main(int argc, char** argv) char corePipeName[64] = "client-core-"; Random_base32(rand, (uint8_t*)corePipeName+CString_strlen(corePipeName), 31); String* pipePath = Dict_getStringC(config, "pipe"); + String* path = String_CONST(Pipe_PATH); if (!pipePath) { - pipePath = String_CONST(Pipe_PATH); + pipePath = path; } if (!Defined(win32) && access(pipePath->bytes, W_OK)) { - Except_throw(eh, "Can't have writable permission to pipe directory."); + Except_throw(eh, "Pipe directory not writable: [%s]",pipePath->bytes); } Assert_ifParanoid(EventBase_eventCount(eventBase) == 0); struct Pipe* corePipe = Pipe_named(pipePath->bytes, corePipeName, eventBase,