2014-09-26 22 views
1

晚上好, 我想在C編寫一個suid-root二進制文件,我偶然發現了以下問題: 我將它作爲非特權用戶user1我可以使用setuid/seteuid來改變我想要的任何用戶ID。問題是我不能用有效的組ID來做到這一點。代碼 部分:setegid()在一個suid根二進制C

if (setegid(VariableID) == -1) { 
    perror("setegid failed"); 
    exit(1); 
} 

,這將返回:

setegid failed: Operation not permitted 

請注意,我可以成功地改變根之間的組ID(0)和執行二進制的用戶,但我不能改變到其他團體。不應該這樣做,因爲二進制文件像UID/EUID一樣是suid-root文件?

+4

改變組第一,然後用戶 – 2014-09-26 14:26:27

+0

你能提供一些關於爲什麼發生這種情況的更多信息? – zakkak 2014-09-26 14:35:05

+0

據我瞭解,如果您先更改用戶,該用戶可能沒有更改組ID的權限,而如果您是root用戶,則當然可以這樣做。 – DaKnOb 2014-09-26 14:46:56

回答

0

答案(感謝Ingo Leonhardt)是您需要在用戶ID之前更改組ID。它現在是有道理的.. :)