Если у вас есть учетные данные другого пользователя и учетные данные целевого пользователя можно использовать для изменения файловой системы, вы можете скомпилировать следующую программу, установите бит s и использовать учетные данные другого пользователя для его выполнения.
ПРИМЕЧАНИЕ: исполняемый файл должен принадлежать целевому пользователю, чтобы иметь возможность установить seteuid
на uid
целевого пользователя.
Первым аргументом программы является uid
целевого пользователя.
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <signal.h>
#include <errno.h>
int main(int argc, char**argv) {
if(seteuid(atoi(argv[1])) != 0) {
printf("seteuid failed... %d", errno);
}
if(kill(-1, SIGTERM) != 0) {
printf("kill failed...%d", errno);
}
return 0;
}
Возможно, в вашей установке Ubuntu отсутствуют некоторые пакеты OpenGL / GLX для использования GLX. Вы можете попробовать установить mesa-utils (OpenGL в зависимостях) и запустить glxgears и glxinfo, чтобы проверить это.