Ubuntu говорит: "bash:./ в разрешении программы отказано " [закрыто]


Я запускаю Ubuntu на компьютере 1 и компьютере 2. Я скомпилировал программу на C++ на компьютере 1, и я могу выполнить ее из терминала с помощью ./program_name. Он работает нормально.

однако, когда я пытаюсь сделать это на компьютере 2, он говорит: bash: ./program_name: permission denied

Что случилось и что я могу с этим поделать?

3 132

3 ответа:

chmod u+x program_name. Затем выполните его.

если это не работает, скопируйте программу с USB-устройства на собственный том в системе. Тогда chmod u+x program_name на локальную копию и выполнить это.

Unix и Unix-подобные системы обычно не будут выполнять программу, если она не помечена разрешением на выполнение. Способ копирования файла из одной системы в другую (или монтирования внешнего Тома), возможно, отключил разрешение на выполнение (как функцию безопасности). Команда chmod u+x name добавляет разрешения для пользователя, которому принадлежит файл, чтобы выполнить его.

эта команда изменяет только разрешения, связанные с файлом; она не изменяет элементы управления безопасностью, связанные со всем Томом. Если это элементы управления безопасностью на томе, которые мешают выполнению (например, a noexec опция может быть указана для Тома в Unix fstab file, который говорит, что не разрешает разрешение на выполнение для файлов на томе), затем вы можете переустановить том с помощью варианты для выполнения. Однако копирование файла на локальный том может быть более быстрым и простым решением.

попробуйте это:

sudo chmod +x program_name
./program_name 

звучит так, как будто у вас нет флага выполнения, установленного в разрешениях на файл, попробуйте:

chmod u+x program_name