Я пытаюсь написать программу CPP, которая будет действовать как «Sudo» для безликого аккаунта. По сути, я хочу, чтобы команда была запускана как безликая учетная запись, а не как пользователь, вызывая команду. Я намерен сделать это, написав программу CPP, которую я буду скомпилировать, поджег ее на безличную учетную запись и установив бит SETUID. Это почти полностью работает, но я не могу добраться до конца, потому что кажется, что существуют религиозные изделия, которые повреждают результаты. Это кодовый блок, который выполняет SetUID: < /p>
uid_t euid, ruid;
ruid = getuid();
euid = geteuid();
seteuid(ruid);
int childPid = fork();
if(childPid == 0){
seteuid(euid);
execvp(command, arguments);
} else {
wait(childPid);
}
< /code>
После составления кода, разыгрывая его и настройку бита SetUID в качестве Facelss, он выглядит следующим образом: < /p>
[user@home]$ ls -ltr ../bin/.sudo
-rwsr-xr-x 1 cadtools vendor_tools 13224 Feb 21 18:23 ../bin/.sudo
[user@home]$
< /code>
Когда я запускаю код в качестве моего имени пользователя, он правильно сообщает «whoami» как безликая учетная запись: < /p>
[user@home]$ ../bin/.sudo /usr/bin/whoami
cadtools
[user@home]$
< /code>
Но результат «групп» неверен. Результатом «групп» является группы имен пользователей, а не безликие аккаунты: < /p>
[user@home]$ ../bin/.sudo /usr/bin/groups
domain users vpn_users linux-admins hw engineering wifi_eng rtm_admins hw_er
[user@home]$ /usr/bin/groups
domain users vpn_users linux-admins hw engineering wifi_eng rtm_admins hw_er
[user@home]$ /usr/bin/groups cadtools
cadtools : domain users vendor_tools engineering hw
[user@home]$
< /code>
Почему вызов execvp () рассматривает «все» как безликая учетная запись? , но результат такой же.
Подробнее здесь: https://stackoverflow.com/questions/794 ... aluser-gro
Включение программы SETUID CPP запустить команду - «Группы» показывают группы реальных пользователей вместо эффективного ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение