0
我遇到了一個非常奇怪的行爲setgid/setuid。他們不會返回錯誤代碼,但也不會調整流程權限。AOSP setgid/setuid沒有效果
這是KitKat,SELinux被禁用(也允許嘗試)。
樣品的編號:
int main(int argc, char **argv)
{
if (setgid(0) || setuid(0))
{
fprintf(stderr, "su: unable to setgid/setuid!\n");
}
else
{
fprintf(stderr, "su: getgid: %d, getuid: %d\n", getgid(), getuid());
char *args[argc + 1];
args[0] = "sh";
args[argc] = NULL;
int i;
for (i = 1; i < argc; i++)
{
args[i] = argv[i];
}
execv("/system/bin/sh", args);
}
}
輸出是getgid /的getuid仍然1000,而不是0
在端推出殼還沒有根權限(獲得拒絕了對大多數命令/腳本)。
我已經看了su.te(此代碼替換現有的蘇,只是爲了更容易地在現有的AOSP項目測試),並補充說:
allow su self:capability { setuid setgid };
這也沒有幫助。
我也嘗試添加setgroups(0,NULL); setgid()之前,但沒有做任何事情。
還有什麼可能會遺漏/錯誤?
編輯:通過一些更多的信息閱讀,它可能是/系統文件夾有nosuid設置它,但通過init.rc看,它似乎沒有具體設置。
在此先感謝。