Add check for being run as root.

This commit is contained in:
Adam Ierymenko 2013-12-10 16:38:45 -08:00
parent f7f3bef313
commit c5ef502b42

View file

@ -415,7 +415,7 @@ int main(int argc,char **argv)
port = Utils::strToUInt(argv[i] + 2); port = Utils::strToUInt(argv[i] + 2);
if (port > 65535) { if (port > 65535) {
printHelp(argv[0],stderr); printHelp(argv[0],stderr);
return -1; return 1;
} }
break; break;
case 'v': case 'v':
@ -425,7 +425,7 @@ int main(int argc,char **argv)
controlPort = Utils::strToUInt(argv[i] + 2); controlPort = Utils::strToUInt(argv[i] + 2);
if (controlPort > 65535) { if (controlPort > 65535) {
printHelp(argv[0],stderr); printHelp(argv[0],stderr);
return -1; return 1;
} }
break; break;
case 'q': case 'q':
@ -458,6 +458,10 @@ int main(int argc,char **argv)
homeDir = ZT_DEFAULTS.defaultHomePath.c_str(); homeDir = ZT_DEFAULTS.defaultHomePath.c_str();
#ifdef __UNIX_LIKE__ #ifdef __UNIX_LIKE__
if (getuid()) {
fprintf(stderr,"%s: must be run as root (uid==0)\n",argv[0]);
return 1;
}
mkdir(homeDir,0755); // will fail if it already exists mkdir(homeDir,0755); // will fail if it already exists
{ {
char pidpath[4096]; char pidpath[4096];
@ -480,12 +484,12 @@ int main(int argc,char **argv)
const char *upgPath = node->reasonForTermination(); const char *upgPath = node->reasonForTermination();
if (upgPath) if (upgPath)
execl(upgPath,upgPath,"-s",(char *)0); // -s = (re)start after install/upgrade execl(upgPath,upgPath,"-s",(char *)0); // -s = (re)start after install/upgrade
exitCode = -1; exitCode = 2;
fprintf(stderr,"%s: abnormal termination: unable to execute update at %s",argv[0],(upgPath) ? upgPath : "(unknown path)"); fprintf(stderr,"%s: abnormal termination: unable to execute update at %s\n",argv[0],(upgPath) ? upgPath : "(unknown path)");
#endif #endif
} break; } break;
case Node::NODE_UNRECOVERABLE_ERROR: { case Node::NODE_UNRECOVERABLE_ERROR: {
exitCode = -1; exitCode = 3;
const char *termReason = node->reasonForTermination(); const char *termReason = node->reasonForTermination();
fprintf(stderr,"%s: abnormal termination: %s\n",argv[0],(termReason) ? termReason : "(unknown reason)"); fprintf(stderr,"%s: abnormal termination: %s\n",argv[0],(termReason) ? termReason : "(unknown reason)");
} break; } break;