В разрешении запрещен запуск моей собственной программы (Ubuntu)

Не совсем связанные с программированием...

Я собрал программу, базовый opengl, затем запустил ее и отказал в разрешении sh: /blabla. Как я могу сделать этот распад?

программа просто делает вращающийся квадрат и у меня Ubuntu 9.4

только что обнаружил, что даже int main(){} не работает

9 ответов

У меня была такая же проблема, и оказалось, что мой раздел был смонтирован как noexec cat / etc / mtab

Когда я настроил параметры в / etc / fstab, я написал exec, user, но оказалось, что опция "user" по умолчанию устанавливает "noexec". Когда я изменил порядок этих двух на пользователя, exec все вернулось к нормальному состоянию!

Надеюсь, поможет.

Как вы его компилируете? Вы можете опубликовать make-файл? Если вы бежите

chmod +x myPorgram
./myProgram

что-то меняется?

Проверьте точку монтирования, чтобы увидеть, монтируется ли он как noexec, выполнив команду "монтировать"

Я использую CodeBlocks в Ubuntu, и у меня была эта проблема много раз. то, что KermiDT сказал, является именно решением (если бы у меня было достаточно точек повторения, я бы проголосовал за это)
Опция "user" по умолчанию устанавливает "noexec".
поэтому в / etc / fstab просто добавьте exec после пользователя. т.е. мой выглядит так:
/dev/sda6 /media/DATA vfat uid=kenny,gid=kenny,users,user,exec 0 0
Хотя расстояние немного... но вы поняли.

Эта проблема также возникает при попытке запуска 32-разрядных приложений в 64-разрядной системе. Выполнение:

a. file (executable name)
b. uname -a

и убедитесь, что оба являются "i386" или "amd64".

Если они не совпадают, взгляните на эту статью:

Помимо вышеупомянутого файла chmod +x, другой проблемой может быть отсутствующая библиотека. Чтобы проверить необходимые библиотеки, используйте ldd:

$ ldd /bin/sh
    linux-vdso.so.1 =>  (0x00007fffb43fe000)
    libc.so.6 => /lib/libc.so.6 (0x00007fc4abe11000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fc4ac183000)

Если одна из этих строк показывает отсутствующую библиотеку, вы узнаете, что нужно установить, прежде чем сможете запустить свою программу.

Другая возможность, если ваша программа представляет собой скрипт (shell, perl, python или другая текстовая программа). Первая строка выглядит так:

#!/usr/bin/perl

Если этот файл не может быть найден, вы получите ошибку отказа в разрешении.

Пара вопросов:

  1. Правильно ли установлены разрешения для файла?
  2. Правильно ли задан путь к любому интерпретатору?

Попробуйте выполнить команду с strace отследить успешные системные вызовы, которые он делает, и где он останавливается.

Вот как вы можете запустить его,

strace ./blabla

Вы получаете сообщение об ошибке "Отказано в доступе" или что-то типа "ошибка формата exec"? С chmod +rx в файле вы не должны нажимать "отказано в разрешении".

Вы также должны убедиться, что ваше имя пользователя входит в группу видео. Проверьте /etc/group и убедитесь, что ваше имя пользователя отображается в строке "видео".

Другие вопросы по тегам