linux 函数 增加用户,linux常用c函数用户组有哪些?
endgrent(關(guān)閉組文件) 相關(guān)函數(shù) getgrent,setgrent 表頭文件 #include #include 定義函數(shù) void endgrent(void); 函數(shù)說明 endgrent()用來關(guān)閉由getgrent()所打開的密碼文件。
返回值 附加說明 范例 請參考getgrent()與setgrent()。 endpwent(關(guān)閉密碼文件) 相關(guān)函數(shù) getpwent,setpwent 表頭文件 #include
#include 定義函數(shù) void endpwent(void); 函數(shù)說明 endpwent()用來關(guān)閉由getpwent()所打開的密碼文件。
返回值 附加說明 范例 請參考getpwent()與setpwent()。 endutent(關(guān)閉utmp 文件) 相關(guān)函數(shù) getutent,setutent 表頭文件 #include 定義函數(shù) void endutent(void); 函數(shù)說明 endutent()用來關(guān)閉由getutent所打開的utmp文件。
返回值 附加說明 范例 請參考getutent()。 fgetgrent(從指定的文件來讀取組格式) 相關(guān)函數(shù) fgetpwent 表頭文件 #include #include #include 定義函數(shù) struct group * getgrent(FILE * stream); 函數(shù)說明 fgetgrent()會從參數(shù)stream指定的文件讀取一行數(shù)據(jù),然后以group結(jié)構(gòu)將該數(shù)據(jù)返回。
參數(shù)stream所指定的文件必須和、etc/group相同的格式。group結(jié)構(gòu)定義請參考getgrent()。 返回值 返回group結(jié)構(gòu)數(shù)據(jù),如果返回NULL則表示已無數(shù)據(jù),或有錯誤發(fā)生。 范例 #include #include #include main() { struct group *data; FILE *stream; int i; stream = fopen("/etc/group", "r"); while((data = fgetgrent(stream))!=0){ i=0; printf("%s :%s:%d :", data->gr_name,data->gr_passwd,data->gr_gid); while (data->gr_mem[i])printf("%s,",data->gr_mem[i++]); printf("\n"); } fclose(stream); } 執(zhí)行 root:x:0:root, bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5 disk:x:6:root lp:x:7:daemon,lp mem:x:8 kmem:x:9 wheel:x:10:root mail:x:12:mail news:x:13:news uucp:x:14:uucp man:x:15 games:x:20 gopher:x:30 dip:x:40: ftp:x:50 nobody:x:99: fgetpwent(從指定的文件來讀取密碼格式) 相關(guān)函數(shù) fgetgrent 表頭文件 #include
#include #include 定義函數(shù) struct passwd * fgetpwent(FILE *stream); 函數(shù)說明 fgetpwent()會從參數(shù)stream指定的文件讀取一行數(shù)據(jù),然后以passwd結(jié)構(gòu)將該數(shù)據(jù)返回。
參數(shù)stream所指定的文件必須和/etc/passwd相同的格式。passwd結(jié)構(gòu)定義請參考getpwent()。 返回值 返回passwd結(jié)構(gòu)數(shù)據(jù),如果返回NULL則表示已無數(shù)據(jù),或有錯誤發(fā)生。 范例 #include
#include main() { struct passwd *user; FILE *stream; stream = fopen("/etc/passwd", "r"); while((user = fgetpwent(stream))!=0){ printf("%s:%d:%d:%s:%s:%s\n",user->pw_name,user->pw_uid,user->pw_gid,user->pw_gecos,user->pw_dir,user->pw_shell); } } 執(zhí)行 root:0:0:root:/root:/bin/bash bin:1:1:bin:/bin: daemon:2:2:daemon:/sbin: adm:3:4:adm:/var/adm: lp:4:7:lp:/var/spool/lpd: sync:5:0:sync:/sbin:/bin/sync shutdown:6:0:shutdown:/sbin:/sbin/shutdown halt:7:0:halt:/sbin:/sbin/halt mail:8:12:mail:/var/spool/mail: news:9:13:news:var/spool/news uucp:10:14:uucp:/var/spool/uucp: operator:11:0:operator :/root: games:12:100:games:/usr/games: gopher:13:30:gopher:/usr/lib/gopher-data: ftp:14:50:FTP User:/home/ftp: nobody:99:99:Nobody:/: xfs:100:101:X Font Server: /etc/Xll/fs:/bin/false gdm:42:42:/home/gdm:/bin/bash kids:500:500: : /home/kids:/bin/bash getegid(取得有效的組識別碼) 相關(guān)函數(shù) getgid,setgid,setregid 表頭文件 #include #include 定義函數(shù) gid_t getegid(void); 函數(shù)說明 getegid()用來取得執(zhí)行目前進(jìn)程有效組識別碼。
有效的組識別碼用來決定進(jìn)程執(zhí)行時組的權(quán)限。返回值返回有效的組識別碼。 范例 main() { printf("egid is %d\n",getegid()); } 執(zhí)行 egid is 0 /*當(dāng)使用root身份執(zhí)行范例程序時*/ geteuid(取得有效的用戶識別碼) 相關(guān)函數(shù) getuid,setreuid,setuid 表頭文件 #include #include 定義函數(shù) uid_t geteuid(void) 函數(shù)說明 geteuid()用來取得執(zhí)行目前進(jìn)程有效的用戶識別碼。
有效的用戶識別碼用來決定進(jìn)程執(zhí)行的權(quán)限,借由此改變此值,進(jìn)程可以獲得額外的權(quán)限。倘若執(zhí)行文件的setID位已被設(shè)置,該文件執(zhí)行時,其進(jìn)程的euid值便會設(shè)成該文件所有者的uid。例如,執(zhí)行文件/usr/bin/passwd的權(quán)限為 -r-s--x--x,其s 位即為setID(SUID)位,而當(dāng)任何用戶在執(zhí)行passwd 時其有效的用戶識別碼會被設(shè)成passwd 所有者的uid 值,即root的uid 值(0)。
返回值 返回有效的用戶識別碼。 范例 main() { printf ("euid is %d \n",geteuid()); } 執(zhí)行 euid is 0 /*當(dāng)使用root身份執(zhí)行范例程序時*/ getgid(取得真實的組識別碼) 相關(guān)函數(shù) getegid,setregid,setgid 表頭文件 #include #include 定義函數(shù) gid_t getgid(void); 函數(shù)說明 getgid()用來取得執(zhí)行目前進(jìn)程的組識別碼。
返回值 返回組識別碼 范例 main() { printf(“gid is %d\n”,getgid()); } 執(zhí)行 gid is 0 /*當(dāng)使用root身份執(zhí)行范例程序時*/ getgrent(從組文件中取得賬號的數(shù)據(jù)) 相關(guān)函數(shù) setgrent,endgrent 表頭文件 #include #include 定義函數(shù) struct group *getgrent(void); 函數(shù)說明 getgrent()用來從組文件(/etc/group)中讀取一項組數(shù)據(jù),該數(shù)據(jù)以group 結(jié)構(gòu)返回。
第一次調(diào)用時會取得第一項組數(shù)據(jù),之后每調(diào)用一次就會返回下一項數(shù)據(jù),直到已無任何數(shù)據(jù)時返回NULL。 struct group{ char *gr_name; /*組名稱*/ char *gr_passwd; /* 組密碼*/ gid_t gr_gid; /*組識別碼*/ char **gr_mem; /*組成員賬號*/ } 返回值 返回group結(jié)構(gòu)數(shù)據(jù),如果返回NULL則表示已無數(shù)據(jù),或有錯誤發(fā)生。
附加說明 getgrent()在第一次調(diào)用時會打開組文件,讀取數(shù)據(jù)完畢后可使用endgrent()來關(guān)閉該組文件。 錯誤代碼 ENOMEM 內(nèi)存不足,無法配置group結(jié)構(gòu)。
范例 #include #include main() { struct group *data; int i; while((data= getgrent())!=0){ i=0; printf(“%s:%s:%d:”,data->gr_name,data->gr_passwd,data->gr_gid); while(data->gr_mem[i])printf(“%s,”,data->gr_mem[i++]); printf(“\n”); }。
全部
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的linux 函数 增加用户,linux常用c函数用户组有哪些?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis linux无法启动服务,Ce
- 下一篇: linux防火墙常用缩写,Linux i