xref: /DragonOS/user/apps/test_cred/main.c (revision 0648a547da3461bd115f7566c6f2feca14eac6ff) !
1*0648a547SJomo #include <sys/types.h>
2*0648a547SJomo #include <unistd.h>
3*0648a547SJomo #include <stdio.h>
4*0648a547SJomo #include <assert.h>
5*0648a547SJomo 
main()6*0648a547SJomo int main()
7*0648a547SJomo {
8*0648a547SJomo     printf("Current uid: %d, euid: %d, gid: %d, egid: %d\n\n", getuid(), geteuid(), getgid(), getegid());
9*0648a547SJomo 
10*0648a547SJomo     // 测试uid
11*0648a547SJomo     printf("Set uid 1000\n");
12*0648a547SJomo     setuid(1000);
13*0648a547SJomo     int uid = getuid();
14*0648a547SJomo     assert(uid == 1000);
15*0648a547SJomo     printf("Current uid:%d\n\n", uid);
16*0648a547SJomo 
17*0648a547SJomo     // 测试gid
18*0648a547SJomo     printf("Set gid 1000\n");
19*0648a547SJomo     setgid(1000);
20*0648a547SJomo     int gid = getgid();
21*0648a547SJomo     assert(gid == 1000);
22*0648a547SJomo     printf("Current gid:%d\n\n", gid);
23*0648a547SJomo 
24*0648a547SJomo     // 测试euid
25*0648a547SJomo     printf("Setg euid 1000\n");
26*0648a547SJomo     seteuid(1000);
27*0648a547SJomo     int euid = geteuid();
28*0648a547SJomo     assert(euid == 1000);
29*0648a547SJomo     printf("Current euid:%d\n\n", euid);
30*0648a547SJomo 
31*0648a547SJomo     // 测试egid
32*0648a547SJomo     printf("Set egid 1000\n");
33*0648a547SJomo     setegid(1000);
34*0648a547SJomo     int egid = getegid();
35*0648a547SJomo     assert(egid == 1000);
36*0648a547SJomo     printf("Current egid:%d\n\n", egid);
37*0648a547SJomo 
38*0648a547SJomo     // 测试uid在非root用户下无法修改
39*0648a547SJomo     printf("Try to setuid for non_root.\n");
40*0648a547SJomo     assert(setuid(0) < 0); // 非root用户无法修改uid
41*0648a547SJomo     printf("Current uid: %d, euid: %d, gid: %d, egid: %d\n", getuid(), geteuid(), getgid(), getegid());
42*0648a547SJomo }