2017-07-14 47 views
1

如果我讓根特權進程模擬一些較小的用戶並分支一個子進程,那麼假設子進程擁有用戶權限並且與根無關,那麼安全嗎?我使用默認的自定義方法作爲用戶,並恢復到所有者的信譽(root)。他們被抽象化。但通常,這些方法會將整個過程的上下文更改爲用戶的上下文(可能包括uid,gid等)。根守護進程 - >模擬爲較少的用戶 - >分叉一個孩子。是子進程用戶還是有一些root權限?

回答

1

fork不會更改進程ID,但exec可以。 exec ing將用當前有效的uid重寫已保存的uid。有效的uid將保持不變,除非可執行文件是setuid可執行文件,在這種情況下,它將從可執行文件的所有者中複製。

我認爲這是最好使用類似:

int print_ids(void) 
{ 
    long ruid, euid, suid; 
    getresuid(&ruid, &euid, &suid); 
    return printf("%ld %ld %ld\n", ruid, euid, suid); 
} 

,並打印在不同的場景不同的上下文中的UID在他們改變其背景覈實和他們沒有。

相關問題