изменить права доступа к файлам в Kali Linux

4745
warfreak92

Как изменить права доступа к файлу для выполнения исполняемого двоичного файла 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
Это сообщение об ошибке означает, что это не проблема с разрешениями, а, возможно, отсутствие зависимости, например, общая библиотека. Отредактируйте ваш пост и добавьте вывод из файла команд оболочки ``,` ldd `и` ls / lib`. sawdust 7 лет назад 1
Это скорее всего дупл https://superuser.com/a/375290/112397 Employed Russian 7 лет назад 0
@sawdust, отредактировал вопрос с выводом по запросу. извини, мне потребовалось время, чтобы вернуться. warfreak92 6 лет назад 0

2 ответа на вопрос

1
Niklas Rosencrantz

В нескольких случаях вы можете получить сообщение «Нет такого файла или каталога»:

  • Файл не существует. Это не тот случай, здесь.

  • Файл с таким именем существует, но это свисающая символическая ссылка. Если chmod +x ./filenameбы это было так, вы бы напечатали ошибку.

  • Файл представляет собой динамически связанный файл ELF, и интерпретатор программы, необходимый для его запуска, не существует.

    Используйте, readelf -l filename | grep interpreterчтобы выяснить, какой программный интерпретатор требуется, и убедиться, что он существует и имеет правильные разрешения.

  • Файл существует, и вы можете даже прочитать его, но когда вы пытаетесь выполнить его, вам говорят, что он не существует.

Команда file -L filenameскажет вам, что это за двоичный файл.

Я не могу найти ни одного примера 32-битного исполняемого файла Linux, чтобы попробовать это, но, возможно, вы можете просто запустить fileкоманду и проверить, является ли файл 32-битным или 64-битным. У вас может быть 32-разрядный двоичный файл в 64-разрядной системе, в которой не установлена ​​32-разрядная поддержка (это особый случай «отсутствует интерпретатор программы»).

0
warfreak92

Это решает это.

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 

Похожие вопросы