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