247

我在计算机 1 和计算机 2 上运行 Ubuntu。我在计算机 1 上编译了一个 C++ 程序,我可以使用./program_name. 它运行良好。

但是,当我尝试在计算机 2 上执行此操作时,它说:bash: ./program_name: permission denied

出了什么问题,我该怎么办?

4

3 回答 3

473

chmod u+x program_name. 然后执行它。

如果这不起作用,请将程序从 USB 设备复制到系统上的本机卷。然后chmod u+x program_name在本地副本上执行。

Unix 和类 Unix 系统通常不会执行程序,除非它被标记为允许执行。您将文件从一个系统复制到另一个系统(或安装外部卷)的方式可能已关闭执行权限(作为一项安全功能)。该命令chmod u+x name为拥有该文件的用户添加执行该文件的权限。

该命令仅更改与文件关联的权限;它不会更改与整个卷关联的安全控制。如果是卷上的安全控制干扰了执行(例如,noexec可能为 Unixfstab文件中的卷指定了一个选项,表示不允许对该卷上的文件执行执行权限),那么您可以重新挂载该卷带有允许执行的选项。但是,将文件复制到本地卷可能是一种更快、更简单的解决方案。

于 2013-09-23T13:39:16.920 回答
40

尝试这个:

sudo chmod +x program_name
./program_name 
于 2013-09-23T13:40:05.950 回答
13

听起来您没有在文件权限上设置执行标志,请尝试:

chmod u+x program_name
于 2013-09-23T13:41:24.487 回答