File: setuid.c

package info (click to toggle)
c-cpp-reference 2.0.2-6
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 8,012 kB
  • ctags: 4,612
  • sloc: ansic: 26,960; sh: 11,014; perl: 1,854; cpp: 1,324; asm: 1,239; python: 258; makefile: 115; java: 77; awk: 34; csh: 9
file content (47 lines) | stat: -rw-r--r-- 1,084 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <sys/types.h>
#include <unistd.h>
main()
{

	/* Identify the person logged in (real ID). */

  printf("getuid = %d\n", getuid());

	/* Get the ID in use by this process (effective ID).
	 * Normally this is the same as above but if the program is:
	 *
	 * o Owned by root (chown root progname).
	 * o Had 'Set owner' set in the permissions (chmod u+s progname).
	 * o The disk is not mounted 'nosetuid'.
	 *
	 * We can use 'setuid' and 'seteuid'.
	 */

  printf("geteuid = %d\n", geteuid());

  (!geteuid())
      ?
      puts("setuid//setruid/seteuid will work.")
      :
      puts("setuid/setruid/seteuid will fail.");

					/*  0 = OK
					 * -1 = Fail
					 */
/*
   printf("seteuid return code  = %d\n", seteuid(3570));

   printf("getuid = %d\n", getuid());
   printf("geteuid = %d\n", geteuid());

   printf("seteuid return code  = %d\n", seteuid(0));

   printf("getuid = %d\n", getuid());
   printf("geteuid = %d\n", geteuid());
*/

  printf("setuid return code  = %d\n", setuid(4261));

  printf("getuid = %d\n", getuid());
  printf("geteuid = %d\n", geteuid());
}