如何解决 Linux 上的 Permission Denied 错误(Linux 权限被拒绝)

在 Linux 操作系统中,执行命令需要相应的权限。每个文件和目录都有对应的权限,例如读取、写入或执行。

假设您在 Linux 中遇到 chmod permission denied 或 Linux permission denied 错误,这意味着您的用户账户缺少必要的权限,或者您对要使用的文件或目录没有足够的读取、写入或执行权限。

通过获取对该文件或目录的相应访问权限,即可解决此错误。Linux 中的权限为用户和用户组分别授予读取、写入或执行文件的权限。能够打开一个文件,并不代表一定拥有编辑权限。

本教程演示如何解决 Linux 上的 Permission Denied(权限被拒绝)错误。所提供的解决方案包括调整文件权限,以及通过切换到 root 账户来访问受保护的文件。请按照下面列出的步骤修改文件权限并修复该错误。

Linux Permission Denied 错误的原因是什么?(Root Permission Denied)

当您在没有必要执行权限的情况下尝试执行命令时,就会出现 Linux permission denied 错误。同样,如果缺少文件或目录的相应权限,读取或写入操作也会受到限制。Linux 权限对系统安全非常重要,可以保护数据免遭未经授权的访问。下面列出了 Linux 中应用于文件或目录的常见权限:

读取(r):允许查看文件或目录的内容。例如,拥有读取权限后,可以读取文本文件的内容或列出目录中的文件。

写入(w):允许修改文件内容或在目录中创建新文件。没有写入权限,就无法修改文件或向目录中添加内容。

执行(x):专门针对包含可执行代码的文件,例如 shell 脚本或二进制可执行文件。执行权限允许将这些文件作为程序运行。

这些权限适用于三类用户:

所有者(u):拥有该文件或目录的用户。

用户组(g):文件或目录所属的指定用户组。

其他用户(o):既不是所有者也不属于该用户组的所有用户。

除了这些基本权限外,Linux 还提供 setuid、setgid 和 sticky bit 等高级特性,它们会影响某些文件和目录的权限运作方式。

Linux Permission Denied 错误的常见场景有哪些?

由于 Linux 拥有严格的安全机制,“Permission Denied”错误可能在多种情况下出现。了解这些常见场景对于有效排查和预防问题至关重要。以下是您可能遇到 root 权限被拒绝等错误的一些典型示例:

  • 用户在使用 apt 或 yum 等包管理器安装或更新软件包时,可能会遇到“Permission Denied”错误。这是因为他们缺少修改系统文件或软件包安装目录所需的权限。
  • 修改系统配置文件(例如 /etc 目录中的文件)通常需要 root 或 sudo 权限。如果用户在没有必要访问权限的情况下尝试编辑这些关键文件,就可能遇到“Permission Denied”错误。
  • 在网络环境中,如果用户没有获得远程系统授予的必要权限,访问远程服务器上的共享目录或文件时可能会出现“Permission Denied”错误。
  • 当用户尝试在自己的主目录中执行操作(例如创建、删除或修改文件和目录)时,也可能出现权限问题。
  • 在没有相应执行权限的情况下运行 shell 脚本或可执行文件,会触发“Permission Denied”错误。用户必须确保脚本具有必要的执行权限。
  • 如果用户缺少转移所有权所需的权限,在尝试更改文件或目录的所有者时可能会遇到问题。

如何修复 Linux 上的 Permission Denied 错误?(chmod Permission Denied)

要修复 Linux permission denied 错误,首先使用以下命令检查您对特定文件或文件夹的权限:

$ ls -la

“ls”命令会显示所有文件和文件夹的详细列表,包括它们的权限,如下所示。

Permission Denied 错误既可能发生在文件上,也可能发生在目录上。以下示例展示了用户账户在缺少必要可执行权限的情况下尝试执行脚本时的情形:

如果您收到此类错误,说明您当前的用户账户没有配置按预期操作该文件所需的权限。要解决此错误,您可以使用 chown 或 chmod 命令调整权限,并授予对该文件所需的访问权限。

请执行以下步骤修复 Linux permission denied 错误:

第 1 步:首先,使用 ls -l 命令检查分配给该文件的权限。该命令会提供任意指定文件或目录的所有者、用户组和权限的详细信息。请务必将文件或目录路径作为参数。

$ ls -la test.sh

上面的输出显示,所有者和用户组都拥有读取和写入权限,而其他用户只有读取权限。值得注意的是,该文件没有分配任何执行权限。正是由于缺少执行权限,尝试执行该文件时才会出现错误。

第 2 步:要解决 Linux permission denied 错误,您需要使用 chmod 命令授予必要的权限。例如,使用以下命令为文件分配读取、写入和执行权限:

$ chmod +rwx test.sh

第 3 步:分配相应权限后,使用以下命令再次运行测试脚本:

$./test.sh

现在,您会看到 shell 脚本的输出显示在终端窗口中。

解决 Permission Denied 错误(chown Permission Denied)

要解决 permission denied 错误,可以在必要时获取文件的所有权,这通常会让您拥有比其他用户更多的权限。或者,您也可以根据需要调整权限。使用 chown 命令将文件所有者更改为特定用户,例如 samreena。

$ chown samreena test.sh

另外,也可以使用以数字表示的绝对模式来代替符号模式(rwx)。示例如下:

仅为文件所有者授予完整权限(读取、写入、执行),为所有其他用户授予读取权限:

$ chmod 744 file-name

为所有用户授予完整权限(读取、写入、执行):

$ chmod 777 file-name

在此示例中,代表所有者的数字 7 表示授予完整权限(rwx),其构成如下:

  • 4 表示读取;
  • 2 表示写入;
  • 1 表示执行。

合计为 7,即授予所有者完全访问权限。

代表用户组的数字 4 表示只读权限(r--),即:

4 表示读取;

用户组成员没有写入或执行权限。

同样,代表其他用户的数字 4 也表示只读权限(r--),即:

4 表示读取;

所有其他用户都没有写入或执行权限。

在八进制表示法中,每一位数字是其所含权限的总和(读取为 4,写入为 2,执行为 1),而 0 表示未设置任何权限。第一位数字设置用户(所有者)的权限,第二位设置用户组的权限,第三位设置其他用户的权限。

“Permission Denied”错误的排查技巧:

找出“Permission Denied”错误的根本原因,对于有效解决问题非常重要。以下排查技巧可以帮助您定位和处理问题:

检查错误消息:留意错误消息,从中了解权限问题的线索。

查看日志文件:检查系统日志中与权限相关的条目。

验证文件权限:使用 ls -l 确认权限设置正确。

确认所有权:确认文件或目录的所有者。

使用 sudo 或 su:考虑使用 sudo 或 su 提升权限。

检查磁盘空间:磁盘空间不足也可能导致权限错误。

网络访问:确保远程文件访问的网络配置设置正确。

结论

在本教程中,我们学习了如何修复 Linux 系统上的 Permission Denied 错误。当缺少读取、写入或执行文件或目录所需的权限时,就会出现此错误。

文中讨论的解决方案包括使用 chmod 命令调整文件权限、使用 chown 更改所有权,或通过 sudo 使用管理员权限。需要注意的是,无论文件配置了何种权限,root 用户账户始终对其拥有完整权限。

本指南介绍了使用上述命令和方法解决 Linux 中权限被拒绝错误的多种方式。如果您认为还有其他方法可以实现同样的目标,欢迎在评论区分享。此外,您也可以考虑购买一台 Linux VPS 服务器,用来练习和测试本文提到的命令。