[英]Using the setuid bit in Linux
我有這個C
文件:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("%s\n", getlogin());
printf("%i\n", getuid());
}
我編譯它,將UID和GID都設置為root
並設置setuid位,使其看起來像這樣:
-rwsrwsr-x 1 root root 8735 Apr 8 19:51 a.out
但是,當我打電話給$ ./a.out
我仍然得到:
user
1000
我究竟做錯了什么?
實際用戶ID仍然是調用程序的用戶,但是有效用戶ID是root。 在setuid程序中,它們是不同的。
要獲取有效的用戶ID,請調用geteuid()
。 您還可以使用cuserid()
獲取與有效用戶ID關聯的名稱。
您的程序僅具有更改其uid的權限。 要實際切換到root用戶,必須在其中調用setuid(0)
。 請在這里看看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.