簡體   English   中英

setgid()失敗 - 不允許操作

[英]setgid() fails - operation not permitted

我在C中創建了一個setuid程序。可執行文件如下所示:

-r-s-r-s--- 1 root users 13073 Jun 15 21:56 server

我以userA/users身份執行程序,並嘗試將uid / gid設置為userB/otherUsers setgid()失敗,不允許操作。 userA不是otherUsers一部分如何更改有效的gid?


[編輯]以下是我所做的一個小小的總結。 我的C程序,作為userA執行,將uid和gid設置為userB並創建一個文件。 與預期不符,該文件屬於組root,因為setgid()失敗。

[userA@node uid]$ id
uid=11945(userA) gid=544(users) groups=544(users)
[userA@node uid]$ id userB
uid=11946(userB) gid=10792(otherUsers) groups=10792(otherUsers)
[userA@node uid]$ cat uid.c 
#include <stdio.h>
#include <unistd.h>

int main() {
  setuid(11946);
  setgid(10792);

FILE *f = fopen("userB_file", "w");
fclose(f);

return 0;
}
[userA@node uid]$ ls -l uid
-r-sr-sr-x 1 root root 7130 Jun 17 14:16 uid
[userA@node uid]$ ./uid 
[userA@node uid]$ ls -l userB_file 
-rw-r--r-- 1 userB root 0 Jun 17 14:19 userB_file

我懷疑你在setgid之前調用setuid 一旦調用setuid將uid更改為root以外的其他內容,您就會喪失將gid更改為任意值的權限。 你必須先調用setgid ,然后調用setuid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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