summaryrefslogtreecommitdiff
path: root/one.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2016-10-21 13:37:27 -0700
committerGitHub <noreply@github.com>2016-10-21 13:37:27 -0700
commitea1f2762cfbdcb691cb22bf986d7373fa8302a8b (patch)
tree579b6ae0f62cb47efc2e67cd478981a52f40bac0 /one.cpp
parent0f3095f1300b44d07ccf4b8e595e7de292eb3a5b (diff)
parent344a25c133ab8195d8b16bb922c951ca6d604057 (diff)
downloadinfinitytier-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.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/one.cpp b/one.cpp
index 6ad5c8e6..79e8caf8 100644
--- a/one.cpp
+++ b/one.cpp
@@ -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