All pastes #25000 Raw Edit

Miscellany

public text v1 · immutable
#25000 ·published 2005-10-09 01:52 UTC
rendered paste body

char opbx_config_OPBX_RUN_GROUP[OPBX_CONFIG_MAX_PATH];


..
	}
	v = opbx_variable_browse(cfg, "general");
	while (v) {
		if (!strcasecmp(v->name, "opbxrunuser")) {
			opbx_copy_string(opbx_config_OPBX_RUN_USER, v->value, sizeof(opbx_config_OPBX_RUN_USER));
		} else if (!strcasecmp(v->name, "opbxrungroup")) {
			opbx_copy_string(opbx_config_OPBX_RUN_GROUP, v->value, sizeof(opbx_config_OPBX_RUN_GROUP));
		}
		v = v->next;
	}



....

if (!rungroup)
		rungroup = opbx_config_OPBX_RUN_GROUP;
	if (!is_child_of_nonroot && rungroup) {
		struct group *gr;
		gr = getgrnam(rungroup);
		if (!gr) {
			opbx_log(LOG_WARNING, "No such group '%s'!\n", rungroup);
			
			
		}
		
		if (setregid(gr->gr_gid, gr->gr_gid)) {
			opbx_log(LOG_WARNING, "Unable to setgid to %d (%s)\n", gr->gr_gid, rungroup);
			exit(1);
		}
		if (option_verbose)
			opbx_verbose("Running as group '%s'\n", rungroup);
	}

....


if (!runuser)
		runuser = opbx_config_OPBX_RUN_USER;
	if (!is_child_of_nonroot && runuser) {
		struct passwd *pw;
		pw = getpwnam(runuser);
		if (!pw) {
			opbx_log(LOG_WARNING, "No such user '%s'!\n", runuser);
			exit(1);
		}
		if (setreuid(pw->pw_uid, pw->pw_uid)) {
			opbx_log(LOG_WARNING, "Unable to setuid to %d (%s)\n", pw->pw_uid, runuser);
			exit(1);
		}
		setenv("OPENPBX_ALREADY_NONROOT","yes",1);
		if (option_verbose)
			opbx_verbose("Running as user '%s'\n", runuser);
	}



.....






	if (!is_child_of_nonroot && rungroup) {
		struct group *gr;
		gr = getgrnam(rungroup);
		if (!gr) {
			opbx_log(LOG_WARNING, "No such group '%s'!\n", rungroup);
			
			
		}
		
		if (setregid(gr->gr_gid, gr->gr_gid)) {
			opbx_log(LOG_WARNING, "Unable to setgid to %d (%s)\n", gr->gr_gid, rungroup);
			exit(1);
		}
		if (option_verbose)
			opbx_verbose("Running as group '%s'\n", rungroup);
	}