diff options
author | Adam Ierymenko <adam.ierymenko@zerotier.com> | 2016-10-21 13:37:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-21 13:37:27 -0700 |
commit | ea1f2762cfbdcb691cb22bf986d7373fa8302a8b (patch) | |
tree | 579b6ae0f62cb47efc2e67cd478981a52f40bac0 /one.cpp | |
parent | 0f3095f1300b44d07ccf4b8e595e7de292eb3a5b (diff) | |
parent | 344a25c133ab8195d8b16bb922c951ca6d604057 (diff) | |
download | infinitytier-ea1f2762cfbdcb691cb22bf986d7373fa8302a8b.tar.gz infinitytier-ea1f2762cfbdcb691cb22bf986d7373fa8302a8b.zip |
Merge pull request #401 from zielmicha/dev
Run as nonroot user on Linux (with CAP_NET_ADMIN and CAP_NET_RAW added).
Diffstat (limited to 'one.cpp')
-rw-r--r-- | one.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -44,6 +44,10 @@ #include <sys/types.h> #include <sys/stat.h> #include <signal.h> + +#ifdef __linux__ +#include "osdep/LinuxDropPrivileges.hpp" +#endif #endif #include <string> @@ -900,7 +904,7 @@ static void printHelp(const char *cn,FILE *out) fprintf(out,"Available switches:" ZT_EOL_S); fprintf(out," -h - Display this help" ZT_EOL_S); fprintf(out," -v - Show version" ZT_EOL_S); - fprintf(out," -U - Run as unprivileged user (skip privilege check)" ZT_EOL_S); + fprintf(out," -U - Skip privilege check and do not attempt to drop privileges" ZT_EOL_S); fprintf(out," -p<port> - Port for UDP and TCP/HTTP (default: 9993, 0 for random)" ZT_EOL_S); #ifdef __UNIX_LIKE__ @@ -1141,6 +1145,14 @@ int main(int argc,char **argv) #endif // __WINDOWS__ #ifdef __UNIX_LIKE__ + +#ifndef ZT_ONE_RUN_AS_ROOT +#ifdef __linux__ + if (!skipRootCheck) + dropPrivileges(homeDir); +#endif +#endif + std::string pidPath(homeDir + ZT_PATH_SEPARATOR_S + ZT_PID_PATH); { // Write .pid file to home folder |