Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu说;bash:“/程序权限被拒绝”;_Bash_Shell_Sh - Fatal编程技术网

Ubuntu说;bash:“/程序权限被拒绝”;

Ubuntu说;bash:“/程序权限被拒绝”;,bash,shell,sh,Bash,Shell,Sh,我在计算机1和计算机2上运行Ubuntu。我在计算机1上编译了C++程序,可以用“ /程序名> /COD>”从终端执行它。它运行良好 然而,当我尝试在计算机2上执行此操作时,它会显示:bash:./program\u name:permission denied 出了什么问题?我能做些什么?chmod u+x program\u name。然后执行它 如果不起作用,请将程序从USB设备复制到系统上的本机卷。然后在本地副本上执行chmod u+x program\u name Unix和类Unix

我在计算机1和计算机2上运行Ubuntu。我在计算机1上编译了C++程序,可以用“<代码> /程序名> /COD>”从终端执行它。它运行良好

然而,当我尝试在计算机2上执行此操作时,它会显示:
bash:./program\u name:permission denied


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

chmod u+x program\u name
。然后执行它

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

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

该命令仅更改与文件关联的权限;它不会更改与整个卷关联的安全控制。如果干扰执行的是卷上的安全控制(例如,可以为Unix
fstab
文件中的卷指定
noexec
选项,该选项表示不允许对卷上的文件执行权限),则可以使用允许执行的选项重新装载卷。但是,将文件复制到本地卷可能是一个更快、更容易的解决方案。

尝试以下方法:

sudo chmod +x program_name
./program_name 

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

chmod u+x program_name

您是否有执行程序名的权限?您是如何将程序从计算机1传送到计算机2的?您是复制了可执行文件还是重新编译了源代码?“ls-l program_name”命令的输出是什么?这似乎与SO无关,因为它不是关于编程,而是关于Linuxtry
bash program_name
的权限管理,我编写了一个
.sh
文件。它拒绝执行此错误消息。我想说这绝对是StackOverflow的主题。我已经提名重新开张。谢谢你的建议。我刚才试过了,但现在它说bash:。/程序名不能执行二进制文件,可能是因为计算机2是32位,计算机1是64位?我想也许我应该在第二台计算机上编译它。谢谢大家的帮助。是的,如果你用64位编译一些程序,并尝试在32位的系统中执行,是行不通的。您需要在计算机2上重新编译源代码。
sudo
通常是不必要的,除非该程序位于您没有写入权限的目录中(在这种情况下,您首先是如何在那里安装的?),我过去认为这只会发生在非Unix/Linux本机分区上,如FAT32,而且不会发生在
/tmp
上。原来我的tmpfs
/tmp
也遇到了同样的问题,我必须将可执行文件复制到一个真正的本机卷,即ext4分区中的我的主文件夹中。我今天遇到了这个问题,所以我STFW,第一个搜索结果是紫色的,这意味着我以前读过。“这是一个有希望的迹象”,我自言自语,然后点击搜索结果。它把我带到了这个页面,这个答案在我的案例中不起作用,最后是上面的评论,它起作用了。然后我注意到评论是我在两个月前写的。哇,这是多么美好的生活啊。很抱歉我背上了这个问答。。。还请考虑可能noexec在fstab中,它在没有任何执行权限的情况下装载驱动器。。。“我听说”有些人“浪费了不少时间去寻找……@Webman:
chmod
做出了持久的改变。如果在使用
chmod
启用权限后权限发生更改,则其他内容正在更改权限。(这可能包括删除文件并重新创建该文件或卸载并重新装载该文件的卷的其他内容。如果正在卸载该卷,可以通过多种方法为外部卷上的文件指定默认权限,但这超出了我现在可以回答的范围。)@SimonOpelt“其他人”对此表示感谢