Ubuntu说“bash:./program Permission denied”[关闭]
Posted
技术标签:
【中文标题】Ubuntu说“bash:./program Permission denied”[关闭]【英文标题】:Ubuntu says "bash: ./program Permission denied" [closed] 【发布时间】:2013-09-28 10:25:22 【问题描述】:我在计算机 1 和计算机 2 上运行 Ubuntu。我在计算机 1 上编译了一个 C++ 程序,我可以使用 ./program_name
从终端执行它。它运行良好。
但是,当我尝试在计算机 2 上执行此操作时,它显示:bash: ./program_name: permission denied
出了什么问题,我该怎么办?
【问题讨论】:
你有权限执行progam_name
吗?
您是如何将程序从计算机 1 获取到计算机 2 的?您是否复制了可执行文件或重新编译了源代码? “ls -l program_name”命令的输出是什么?
这似乎与 SO 无关,因为它不是关于编程,而是关于 Linux 上的权限管理
试试bash program_name
我写了一个.sh
文件。它拒绝执行此错误消息。我会说这绝对是 *** 的主题。我已提名重新开放。
【参考方案1】:
chmod u+x program_name
。然后执行。
如果这不起作用,请将程序从 USB 设备复制到系统上的本机卷。然后在本地副本上chmod u+x program_name
并执行。
Unix 和类 Unix 系统通常不会执行程序,除非它被标记为允许执行。您将文件从一个系统复制到另一个系统(或安装外部卷)的方式可能已关闭执行权限(作为一项安全功能)。命令chmod u+x name
为拥有该文件的用户添加执行它的权限。
该命令仅更改与文件关联的权限;它不会更改与整个卷关联的安全控制。如果是卷上的安全控制干扰了执行(例如,可以为 Unix fstab
文件中的卷指定 noexec
选项,表示不允许卷上文件的执行权限),然后您可以使用选项重新安装卷以允许执行。但是,将文件复制到本地卷可能是一种更快、更简单的解决方案。
【讨论】:
我曾经认为这只会发生在非 Unix/Linux 原生分区(例如 FAT32)上,不会发生在/tmp
上。结果我的 tmpfs /tmp
遇到了同样的问题,我必须将可执行文件复制到一个真正的本机卷中,即我的主文件夹 ~ 在一个 ext4 分区中。
我,今天遇到这个问题,所以我STFW,第一个搜索结果是紫色的,这意味着我以前看过。 “这是一个有希望的迹象”,我自言自语,然后点击了那个搜索结果。它把我带到了这个页面,这个答案在我的情况下不起作用,最后是上面的评论。然后我注意到评论是我在 2 个月前写的。哇,多么美好的生活。
很抱歉在此 Q/A 上捎带...请还认为 noexec 可能在 fstab 中,它在没有任何执行权限的情况下安装驱动器...“我听说”“有些人”花了很多时间寻找那个 ...
@Webman: chmod
做出了持久的改变。如果在您使用chmod
启用它们后权限发生了变化,那么其他东西正在改变它们。 (这可能包括删除文件并重新创建它或正在卸载和重新安装文件的卷。如果正在重新安装卷,有一些方法可以为外部卷上的文件指定默认权限,但这超出了范围我现在可以回答了。)
@SimonOpelt “其他人”很感激【参考方案2】:
试试这个:
sudo chmod +x program_name
./program_name
【讨论】:
感谢您的建议。我只是尝试过 - 但现在它说 bash: ./program_name 无法执行二进制文件 会不会是因为计算机2是32位而计算机1是64位?我想也许我应该在计算机 2 上编译它。谢谢大家的帮助。 是的,如果你用 64 位编译一些程序,并尝试在 32 位系统中执行,是行不通的。你需要在电脑上重新编译源代码 2.sudo
通常不需要,除非程序位于您没有写权限的目录中(在这种情况下,您首先是如何将其安装在那里的?)跨度>
【参考方案3】:
听起来你没有在文件权限上设置执行标志,试试:
chmod u+x program_name
【讨论】:
以上是关于Ubuntu说“bash:./program Permission denied”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Pygame 已经安装;但是,python终端说“没有名为'pygame'的模块”(Ubuntu 20.04.1)
Ubuntu说“bash:./program Permission denied”[关闭]