运行我的程序时提示“bash: ./程序权限被拒绝”;

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

然而,当我尝试在计算机2上这样做时,它说:bash: ./program_name: permission denied

出了什么问题,我能做些什么?

892894 次浏览

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

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

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

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

试试这个:

sudo chmod +x program_name
./program_name

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

chmod u+x program_name