Почему не хватает привелегий для setreuid?, belmondo, 17-Сен-17, 12:53 [смотреть все]написал небольшой кодик асм: section .text global _start _start: xor eax, eax mov al, 0x71 xor ebx, ebx xor ecx, ecx xor esi, esi xor edi, edi syscall mov al, 0x3c syscall который дропает ошибку: $sudo nasm -static -f elf64 exit.asm && sudo ld exit.o -o exit && sudo ./exit; strace ./exit [sudo] пароль для belmondo: execve("./exit", ["./exit"], [/* 61 vars */]) = 0 setreuid(0, 0) = -1 EPERM (Operation not permitted) strace: [ Process PID=7703 runs in x32 mode. ] syscall_18446744072635809596(0, 0, 0, 0, 0, 0) = -1 (errno 38) --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xffffffffffffffda} --- +++ killed by SIGSEGV (core dumped) +++ Ошибка сегментирования (сделан дамп памяти) Но код с такой же сутью на плюсах ее не дропает: #include <unistd.h> #include <iostream> using namespace std;int main() { cout << setreuid(0,0) << endl; return 0; } $ g++ -o check check.cpp && sudo ./check 0 В чем может быть проблема?
|