Я запускаю Ubuntu на компьютере 1 и компьютере 2. Я скомпилировал программу C ++ на компьютере 1, и я могу выполнить ее с терминала, используя ./program_name
. Работает нормально.
Однако, когда я пытаюсь сделать это на компьютере 2, он говорит: bash: ./program_name: permission denied
Что не так и что я могу с этим сделать?
progam_name
?bash program_name
.sh
файл. Он отказался выполнить с этим сообщением об ошибке. Я бы сказал, что это определенно актуально для StackOverflow. Я номинирован на повторное открытие.Ответы:
chmod u+x program_name
, Тогда выполните это.Если это не помогает, скопируйте программу с устройства USB на собственный том системы. затем
chmod u+x program_name
на локальной копии и выполните это.Unix и Unix-подобные системы, как правило, не будут выполнять программу, если она не помечена с разрешением на выполнение. То, как вы скопировали файл из одной системы в другую (или подключили внешний том), возможно, отключило разрешение на выполнение (в качестве функции безопасности). Команда
chmod u+x name
добавляет разрешение для пользователя, которому принадлежит файл, на его выполнение.Эта команда только изменяет разрешения, связанные с файлом; это не меняет элементы управления безопасностью, связанные со всем томом. Если элементы управления для тома мешают выполнению (например,
noexec
для тома вfstab
файле Unix может быть указана опция , которая запрещает разрешение на выполнение для файлов тома), вы можете перемонтировать том. с вариантами, чтобы разрешить выполнение. Однако копирование файла на локальный том может быть более быстрым и простым решением.источник
/tmp
. Оказывается, моя tmpfs/tmp
страдает той же проблемой, и мне приходится копировать исполняемый файл в реальный собственный том, то есть в мою домашнюю папку ~ в разделе ext4.chmod
делает длительные изменения. Если разрешения меняются после того, как вы их используетеchmod
, то что-то еще меняет их. (Это может включать в себя что-то еще, удаляющее файл и воссоздающее его, или том, на котором файл монтируется и монтируется. Если том перемонтируется, существуют способы указать разрешения по умолчанию для файлов на внешних томах, но это выходит за рамки Я могу ответить сейчас.)Попробуй это:
источник
sudo
как правило, не требуется, если только программа не находится в каталоге, где у вас нет разрешения на запись (в каком случае, как вы установили его там в первую очередь?)Похоже, у вас не установлен флаг выполнения в правах доступа к файлу, попробуйте:
источник