簡體   English   中英

在Linux中使用setuid位

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM