日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

getuid、geteuid、getgid和getegid函数

發布時間:2023/11/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 getuid、geteuid、getgid和getegid函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include <unistd.h>

#include <sys/types.h>

uid_t getuid(void);

uid_t geteuid(void);

作用:getuid返回當前進程的實際用戶ID;geteuid返回當前用戶的有效用戶ID。這兩個總是成功,不會失敗。

?

#include <unistd.h>

#include <sys/types.h>

gid_t getgid(void);

gid_t getegid(void);

作用:getuid返回當前進程的實際用戶組ID;geteuid返回當前用戶的有效用戶組ID。這兩個總是成功,不會失敗。因此返回值總是大于或等于0,0為超級用戶root。

uid、euid、gidegid的區別。

linux系統中每個進程都有2個用戶ID,分別為用戶ID(uid)和有效用戶ID(euid),UID一般表示進程的創建者(屬于哪個用戶創建),而EUID表示進程對于文件和資源的訪問權限(具備等同于哪個用戶的權限)。C語言中,可以通過函數getuid( )和geteuid()來獲得進程的兩個ID值。當一個用戶登陸系統時,系統會將UID和EUID都賦值為/etc/passwd文件中的UID,一般情況下2個ID是相同的,但是某些情況下會出現2個ID不同的情況。
gid和egid同理。

首先,修改一下文件屬性,setuid或setgid:chmod u+s printid 這樣一來,文件在執行階段具有文件所有者的權限,此時進程的euid為文件所有者的ID;如在使用sudo命令時,euid為root用戶,以root用戶的身份訪問操作文件或執行命令; chmod g+s printid? 這樣一來,文件在執行階段具有文件所屬組的權限,此時進程的egid為文件所屬組的ID。

?

區分一個函數是“系統函數”還是“庫函數”依據:1.是否訪問內核數據結構;2.是否訪問外部硬件資源。二者有任一個,則為系統函數;二者均無,則為庫函數。比如,fork、getpid、getuid和getgid等函數就是系統函數,因為它們需要訪問內核的數據結構PCB。

總結

以上是生活随笔為你收集整理的getuid、geteuid、getgid和getegid函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。