в разрешении запрещен запуск моей собственной программы (Ubuntu) - PullRequest
8 голосов
/ 17 июня 2009

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

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

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

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

Ответы [ 9 ]

14 голосов
/ 17 февраля 2010

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

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

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

7 голосов
/ 17 июня 2009

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

chmod +x myPorgram
./myProgram

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

5 голосов
/ 17 июня 2009

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

2 голосов
/ 31 июля 2010

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

1 голос
/ 11 февраля 2010

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

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

и убедитесь, что оба типа - "i386" или "amd64".

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

1 голос
/ 17 июня 2009

Помимо вышеупомянутого файла 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 голос
/ 17 июня 2009

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

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

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

0 голосов
/ 17 июня 2009

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

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

strace ./blabla

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

...