示例#1
0
文件: setregid03.c 项目: 1587/ltp
static void setup(void)
{
	struct group *junk;

	tst_require_root();

	tst_sig(FORK, DEF_HANDLER, NULL);

	if (getpwnam("nobody") == NULL)
		tst_brkm(TBROK, NULL, "nobody must be a valid user.");
	nobody = *(getpwnam("nobody"));

#define GET_GID(group) do { \
	junk = getgrnam(#group); \
	if (junk == NULL) { \
		tst_brkm(TBROK, NULL, "%s must be a valid group", #group); \
	} \
	GID16_CHECK(junk->gr_gid, setregid, NULL); \
	group = *(junk); \
} while (0)

	GET_GID(users);
	GET_GID(sys);
	GET_GID(bin);

	TEST_PAUSE;
}
示例#2
0
static void setup(void)
{
	struct group *junk;

	tst_require_root(NULL);

	tst_sig(FORK, DEF_HANDLER, cleanup);

	ltpuser = getpwnam("nobody");
	if (ltpuser == NULL)
		tst_brkm(TBROK, NULL, "getpwnam(\"nobody\") failed");

	if (setgid(ltpuser->pw_gid) == -1) {
		tst_brkm(TBROK | TERRNO, NULL,
			 "setgid failed to set the effective gid to %d",
			 ltpuser->pw_gid);
	}
	if (setuid(ltpuser->pw_uid) == -1) {
		tst_brkm(TBROK | TERRNO, NULL,
			 "setuid failed to to set the effective uid to %d",
			 ltpuser->pw_uid);
	}

#define GET_GID(group)	do {		\
	junk = getgrnam(#group);	\
	if (junk == NULL) {		\
		tst_brkm(TBROK|TERRNO, NULL, "getgrnam(\"%s\") failed", #group); \
	}				\
	GID16_CHECK(junk->gr_gid, setregid, NULL); \
	group = *(junk); \
} while (0)

	GET_GID(root);
	GET_GID(nobody);
	GET_GID(bin);

	TEST_PAUSE;
}