我升级了我的 ubuntu 到 13.04 版本。升级后,我无法在终端中执行 c 程序。当我尝试执行时,它显示如下所示的错误
bash: ./cd: Permission denied
其中 cd 是我的可执行文件,它在较低版本的 ubuntu 中运行良好。
答案1
首先你必须知道什么是权限。
要了解权限,请在终端中输入以下代码。
ls -lh
或者
ls -l
然后它将显示所有文件的权限,如下所示。选择您的文件权限。
-rw-r--r--
你必须把它们分成 4 个部分。
parts: 1 2 3 4
+--------------------------------+
| - | r w - | r - x | - - - | (r: Read, w: Write, x: Executable, -: No perm)
+--------------------------------+
perm: ROOT USER GROUP
- 第一部分表示文件类型。“-”表示常规。“d”表示目录,“p”表示管道等。
- 第二部分表示 ROOT 权限。在我的示例中,它是“rw -”。这意味着 root 具有读写权限,但没有可执行权限。
- 第三部分是用户权限。这里我们可以看到“r - x”。这意味着用户具有读取、执行权限,但没有写入权限。
- 第四部分表示组的权限。这里的组有“- - -”。所以它没有任何权限。
您收到错误“权限被拒绝”。“cd”是您的可执行文件。它需要可执行权限 (x)。
要更改文件的权限:
在你的情况下,你可能没有可执行权限。为此,请尝试下面的 caode
chmode +x <filename> (eg: chmode +x cd //here cd is your filename)
您还可以通过将“x”替换为“r”(读取)或“w”(写入)来分配其他权限。
再次验证使用
ls -l (or) ls -lh.
注意:如果“chmod”返回“操作不允许”之类的错误,则尝试
sudo chmod +x <filename> (eg: sudo chmod +x cd)
有关权限的更多信息:
man chmod
答案2
cd
使用以下命令确保您的程序确实可以执行:
chmod +x cd
答案3
在我看来,您正试图在终端中执行内置命令(例如“cd”)。不要在命令前加上“./”,而是在命令行中直接使用“cd”调用。
我可能误解了您的查询,但希望这有效。否则,请按照上述涉及为文件分配可执行位的答案之一进行操作,然后尝试以这种方式运行它。