Изменить права доступа к файлам в Kali Linux
Как изменить права доступа к файлу для выполнения исполняемого двоичного файла ELF в Kali Linux? я пытался chmod +x <filename>
а затем запустить его с ./filename
но все, что я получаю, это Error: No file found
, Есть еще идеи? Я даже пытался chmod 777 <filename>
, Мне интересно, есть ли что-то, что я пропускаю?
Редактировать:
Выход из file <filename>:
root@swat:~/Downloads# file talisman
talisman: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32,
BuildID[sha1]=2b131df906087adf163f8cba1967b3d2766e639d, not stripped
Выход из ldd <filename>:
root@swat:~/Downloads# ldd ./talisman
not a dynamic executable
Выход из ls /lib:
root@swat:~# ls /lib
console-setup init startpar
cpp klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so systemd
crda ld-linux.so.2 terminfo
cryptsetup live udev
firmware lsb x86_64-linux-gnu
hdparm modprobe.d
ifupdown modules
2 ответа
Это решает это.
root@swat:~/Downloads# readelf -l ./talisman | grep interpreter
[Requesting program interpreter: /lib/ld-linux.so.2]
Затем я искал недостающие библиотеки, выполнив эту команду:
root@swat:~/Downloads# ldd /bin/ls
linux-vdso.so.1 (0x00007ffe9a971000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1
(0x00007fe90a8a7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe90a50a000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe90a297000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe90a093000)
/lib64/ld-linux-x86-64.so.2 (0x000056083d3b2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
(0x00007fe909e76000)
Это подтверждает, что у меня нет неработающих символических ссылок для этой библиотеки и этой библиотеки. (/lib/ld-linux.so.2)
это загрузка не найдена в /bin/ls
,
Выпуск это решает проблему:
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1
В нескольких случаях вы можете получить сообщение "Нет такого файла или каталога":
Файл не существует. Это не тот случай, здесь.
Файл с таким именем существует, но это свисающая символическая ссылка.
chmod +x ./filename
напечатал бы ошибку, если бы это было так.Файл представляет собой динамически связанный файл ELF, и интерпретатор программы, который требуется для его запуска, не существует.
использование
readelf -l filename | grep interpreter
выяснить, какой программный интерпретатор требуется, и убедиться, что он существует и имеет правильные разрешения.Файл существует, и вы можете даже прочитать его, но когда вы пытаетесь выполнить его, вам говорят, что он не существует.
file -L filename
Команда скажет вам, что это за двоичный файл.
Я не могу найти пример 32-битного исполняемого файла Linux, чтобы попробовать это, но, возможно, вы можете просто запустить file
введите команду и проверьте, является ли файл 32-разрядным или 64-разрядным. У вас может быть 32-разрядный двоичный файл в 64-разрядной системе, в которой не установлена 32-разрядная поддержка (это особый случай "отсутствует интерпретатор программы").