深入了解 Linux 中的 chmod 644 与 -rw-r–r–:文件权限清晰解析

目次

1. 引言

什么是 Linux 中的“访问权限”?

在 Linux 和类 Unix 系统中,正确管理文件和目录的访问权限极其重要。这不仅是出于安全考虑,也是保持系统稳定运行的必要手段。

很多人在终端查看文件列表时,可能会好奇类似 -rw-r--r-- 的符号到底代表什么。

chmod 与 -rw-r–r– 的关系

这些符号使用符号表示法来描述文件的访问权限。chmod 命令用于设置和修改这些权限。换句话说,当你使用 chmod 为文件分配特定权限时,结果会以 -rw-r--r-- 之类的符号形式显示。

本文的目的与受众

本文将通俗易懂地解释 -rw-r--r-- 的真实含义以及如何使用 chmod 对其进行设置或更改。同时我们还会讨论安全注意事项以及实际工作中的使用案例。

内容面向从 Linux 入门者到已经能够熟练使用终端的中级用户,旨在提供可直接在实际工作环境中使用的实用知识。

2. 什么是 chmod?(基础认识)

chmod 命令的作用

chmod(读作 “change mode”)是 Linux 与类 Unix 操作系统中用于修改文件和目录访问权限的命令。
使用该命令可以灵活地控制谁可以执行哪些操作(读取、写入、执行)。

正确的权限设置不仅关系到 安全,还关系到 防止文件共享和执行问题

chmod 的基本语法

chmod [options] [permissions] filename

例如:

chmod 644 sample.txt

该命令会将 sample.txt 的权限更改为:

-rw-r--r--  1 user group 1234 Apr 13 20:00 sample.txt
  • 所有者(用户):允许读取和写入(rw-)
  • 所属组:只读(r–)
  • 其他用户:只读(r–)

指定权限的两种方式

使用 chmod 指定权限有两种方法:

  • 数值模式
  • 示例:chmod 755 script.sh
  • 通过数字为文件分配权限。
  • 符号模式
  • 示例:chmod u=rw,g=r,o=r file.txt
  • 使用符号,如 u(用户)、g(组)、o(其他)以及 r/w/x 来表示权限。

两种方式得到的结果相同。数值模式适合批量快速修改,而符号模式则提供更灵活的控制方式。

chmod 与 chown 的区别

一个常被混淆的命令是 chown

  • chmod:更改访问权限
  • chown:更改文件所有者和所属组

由于两者的目的不同,务必要明确各自的作用。

3. 理解 -rw-r–r– 的含义

权限符号的结构

在 Linux 中运行 ls -l 时,文件信息会以如下格式显示:

-rw-r--r--  1 user group  1234 Apr 13  2025 sample.txt

最左侧的 -rw-r--r-- 表示文件的 访问权限。了解它可以让你准确知道谁可以对该文件进行何种操作。

各部分的详细拆解

① 第一个字符:文件类型

SymbolMeaning
-Regular file
dDirectory
lSymbolic link
bBlock device
cCharacter device

-rw-r--r-- 中,首位的 - 表示普通文件。

② 第 2–10 位字符:权限(3 字符 × 3 组)

  • 所有者(用户)rw- 允许读取和写入;不允许执行。
  • 所属组r-- 只读。
  • 其他用户r-- 只读。

这意味着 只有所有者可以编辑该文件,其他人只能查看

数值表示:644 是什么含义

Linux 权限也可以使用 数值(八进制)表示法 来表达。

-rw-r--r-- 的数值等价形式是 644

User TypeSymbolicNumberMeaning
Ownerrw-6Read + Write
Groupr--4Read only
Othersr--4Read only

数值的计算方式如下:

  • 读取(r) = 4
  • 写入(w) = 2
  • 执行(x) = 1

.因此,rw- = 4 + 2 = 6,每个 r-- = 4,结果为 644

为什么常用这种权限

-rw-r--r--(644)是 公共文件和静态 Web 服务器内容(如 HTML 和 CSS)非常常见的权限

  • 只有所有者可以修改文件,防止意外更改
  • 其他用户可以读取文件,便于共享和公开访问

正确使用时,这种设置在 安全性和可用性 之间取得平衡。

4. 使用 chmod 设置 -rw-r–r–(实用指南)

使用 chmod 命令更改权限

文件和目录的访问权限可以通过 chmod 命令自由修改。例如,想把权限设为 -rw-r--r--,只需使用权限码 644

使用数字模式设置权限

使用格式 chmod 644 filename

chmod 644 document.txt

此命令会将 document.txt 的权限更改为:

-rw-r--r--  1 user group 1234 Apr 13 20:00 document.txt
  • 所有者(user):允许读取和写入(rw-)
  • 组(group):只读(r–)
  • 其他人(others):只读(r–)

使用符号模式设置权限

如果需要更灵活的控制,符号模式非常有用。

chmod u=rw,g=r,o=r document.txt

该命令的含义是:

  • u=rw:授予所有者读取和写入权限
  • g=r:授予组只读权限
  • o=r:授予其他人只读权限

结果与使用数字模式 644 完全相同。

为目录设置权限时的注意事项

与文件不同,目录必须拥有执行权限(x)才能被访问

例如,下面的设置可能会限制访问:

chmod 644 my_folder

在此配置下,虽然授予了读取权限,但由于缺少执行权限,用户无法进入目录。

正确示例:

chmod 755 my_folder
  • 所有者:读取、写入、执行
  • 组和其他人:读取和执行

这样其他用户就可以列出并访问目录中的文件。

递归更改权限:-R 选项

如果想一次性更改多个文件和子目录的权限,可使用 -R(递归)选项。

chmod -R 644 my_folder

此命令会将 my_folder 下的所有文件都设为 644。但这种做法伴随 重要的注意事项

5. 使用 ls -l 命令检查权限

查看文件权限的方法

在 Linux 中,要检查文件和目录的权限,使用标准的 ls -l 命令。它会显示权限、所有者、文件大小、最后修改时间等详细信息。

基本用法

ls -l

输出类似如下:

-rw-r--r--  1 naoya devs  2048 Apr 13 20:00 index.html

每一列的含义如下:

FieldDescription
-rw-r--r--Permissions
1Number of hard links
naoyaOwner (user)
devsGroup
2048File size (bytes)
Apr 13 20:00Last modified date
index.htmlFile name

如何读取权限字段

关注 -rw-r--r-- 部分。它可以拆解为:

  • 第一个字符:文件类型
  • -:普通文件
  • d:目录
  • l:符号链接
  • 后面的九个字符:权限(3 × 3 组)
  • 所有者:rw- → 读取和写入
  • 组:r-- → 只读
  • 其他人:r-- → 只读

这表明只有所有者可以编辑文件,其他人只能读取。

检查特定文件

要查看某个特定文件的权限,只需指定文件名:

ls -l index.html

在包含大量文件的目录中,这非常有用。

检查目录权限

目录同样可以使用 ls -l 检查。若只想查看目录本身而非其内容,使用 -d 选项。

ls -ld my_folder

这仅显示 my_folder 的权限信息。

安全的权限管理

修改完权限后,建议始终使用 ls -l 验证结果。

错误的设置可能导致安全问题或意外行为。

.You can also combine it with pipes for filtering:

ls -l | grep '.sh'

这会过滤并仅显示 shell 脚本文件。

6. 使用 GUI 工具检查和更改权限(适合初学者)

为不习惯使用命令行的用户提供的选项

Linux 通常通过终端和命令行操作,但许多初学者觉得基于文本的界面难以使用或容易出错。
对于这些用户,文件权限也可以使用 GUI(图形用户界面)工具 来检查和修改。

使用 Ubuntu 文件管理器(Nautilus)

Ubuntu 等 Linux 发行版默认自带一个名为 Nautilus 的文件管理器,类似于 Windows Explorer。

如何检查权限:

  1. 右键点击目标文件或目录
  2. 选择 “属性”
  3. 打开 “权限” 选项卡(不同版本的标签可能略有差异)

在那里可以做的操作:

  • 查看并更改所有者和所属组(需要管理员权限)
  • 切换读取、写入和执行权限
  • 更改会立即生效

rw-r-- 等符号表示不同,权限会以 简明的文字描述(如 “只读” 或 “读写”)显示,便于初学者理解。

WinSCP(适用于 Windows 用户的 SFTP 客户端)

在 Windows 上连接远程 Linux 服务器时,WinSCP 允许通过 GUI 管理权限。

步骤:

  1. 使用 WinSCP 登录服务器
  2. 右键点击文件并选择 “属性”
  3. 更改权限值(例如 644)或使用复选框
  4. 点击 “确定” 以应用更改

优势:

  • 权限可以同时以数字和符号形式查看
  • 通过 GUI 支持递归权限更改

注意事项:

  • 需要 root 权限的文件在没有 sudo 权限的情况下可能无法修改
WinSCP - Free SFTP and FTP client

WinSCP is a popular free file manager for Windows supporting…

FileZilla(跨平台 SFTP 客户端)

跨平台 SFTP 客户端 FileZilla(适用于 macOS 和 Linux)同样支持权限更改。

步骤:

  1. 连接到服务器
  2. 右键点击目标文件
  3. 选择 “文件权限”
  4. 使用复选框或数字值调整权限后点击 “确定”

GUI 操作的优势与注意事项

优势:

  • 对初学者来说出错概率更低
  • 更改后可以立即在界面上直观看到
  • 无需记忆命令语法

注意事项:

  • 某些服务器环境不允许通过 GUI 工具更改权限
  • 显示的数值不一定与实际生效的权限完全一致,建议使用 ls -l 再次确认

FileZilla - The free FTP solution for both client and server…

7. chmod 的重要注意事项与故障排除

仍然不起作用——为什么?

即使使用 chmod 更改了权限,文件仍可能表现异常。大多数情况下,这是由于 权限配置错误或误解 所致。以下列出常见的真实场景问题及解决方案。

“Permission denied” 错误

症状:

bash: ./script.sh: Permission denied

原因:

  • 文件没有执行权限(x)

解决方案:

chmod +x script.sh

或使用数字模式:

chmod 755 script.sh

请注意,拥有读取或写入权限并不意味着拥有执行权限。

没有执行权限的目录无法访问

对目录使用 chmod 644 可能导致无法访问其内容。

原因:

  • 目录必须拥有执行权限(x)才能进入并列出其内容。

示例:

chmod 644 my_folder
ls my_folder

这可能会导致错误。

修复:

chmod 755 my_folder

递归更改(-R)的陷阱

虽然 chmod -R 使用方便,但它会对文件和目录使用相同的权限,可能引发意外问题。

常见错误:

chmod -R 644 /var/www/html

这会去除目录的执行权限,使其不可访问。

正确做法:

.“`

Apply execute permissions to directories

find /var/www/html -type d -exec chmod 755 {} \;

Apply file permissions

find /var/www/html -type f -exec chmod 644 {} \;

### 所有者和组不匹配



仅有权限不足以保证安全;文件的所有者和所属组设置同样重要。  
例如,如果 Web 服务器用户(如 `apache`)需要读取某个文件,但该文件的所有者是普通用户且其他人没有读取权限,则该文件将无法被正确提供服务。



**解决方案:**



* 更改所有者:`sudo chown www-data:www-data index.html`
* 授予组访问权限:`chmod 640 index.html`(前提是组设置合适)



### 为什么 `chmod 777` 危险



有些用户尝试通过将权限设为 `777` 来解决问题,但这 **极其危险**。



**原因:**



* 任何人都可以读取、写入和执行该文件
* 极易被篡改或执行恶意脚本



**推荐的最佳实践:**



* **文件**:644 或 600
* **目录**:755 或 700
* **脚本/二进制文件**:755(视需要而定)



## 8. 实际使用案例与常见场景



### chmod 权限在真实环境中如何使用?



`chmod` 命令及类似 `-rw-r--r--` 的权限 **在实际服务器运维和开发环境中被频繁使用**。  
下面列出几个具有代表性的场景,说明权限在实践中的应用方式。



### 1. 管理 Web 服务器上的 HTML 文件



**场景:**  
在 Apache 或 Nginx 等 Web 服务器上发布 HTML 文件时,通常使用的权限是 `-rw-r--r--`(即 644)。

chmod 644 index.html

**为什么是 644?**



* 所有者(站点管理员)需要写入权限
* Web 服务器用户(如 www-data)只需要读取权限
* 为其他人提供写入权限既不必要也不安全



这种配置实现了 **最小特权原则下的安全网页内容发布**。



### 2. 为脚本文件授予执行权限



**场景:**  
你创建了一个 shell 脚本 `backup.sh`,但执行时出现 “Permission denied” 错误。

chmod 755 backup.sh

**该设置的含义:**



* 所有者:读取、写入、执行(rwx)
* 组和其他用户:读取和执行(rx)



这允许其他人运行脚本,同时限制对脚本的编辑权限仅限所有者。



### 3. 限制对敏感文件的访问



**场景:**  
你管理一个包含 API 密钥或密码的文件 `secrets.txt`,希望阻止其他人访问它。

chmod 600 secrets.txt

**含义:**



* 所有者:仅读取和写入
* 组和其他用户:无任何访问权限



这是一条 **关键的安全最佳实践**。敏感文件应始终使用 `600` 或 `400`(只读)进行管理。



### 4. 安全共享目录



**场景:**  
你创建了一个名为 `shared_folder` 的共享目录,供多个开发者使用。

chmod 770 shared_folder

**含义:**



* 所有者和组:完整权限(rwx)
* 其他用户:无访问权限



通过将开发团队设为该目录的所属组,你可以实现 **安全且高效的协作**。组成员可使用 `chgrp` 进行调整。



### 5. 避免因误配置导致的问题



**场景:**  
你不小心执行了 `chmod -R 777 .`,导致所有文件对任何人都可写。



**推荐的预防措施:**



* 始终使用 `find` 区分文件和目录
* 事先使用 `ls -l` 检查权限
* 首先在预演环境中测试更改



## 9. 常见问题解答 (FAQ)



### Q1. `chmod 644` 与 `-rw-r--r--` 有何区别?



**A. 两者表示相同的权限,只是表示方式不同。**



* `chmod 644`:数值形式的权限指定
* `-rw-r--r--`:`ls -l` 显示的符号形式



### Q2. 如果文件没有执行权限会怎样?



**A. 脚本或二进制文件将无法执行。**

bash: ./script.sh: Permission denied

**解决办法:**

chmod +x script.sh

### Q3. 在目录上使用 `644` 安全么?

**A. 一般来说,没有。**



目录需要**执行权限 (x)**才能访问。



**正确设置:**

chmod 755 directory_name

### Q4. 使用 `chmod -R` 时有什么风险吗?



**A. 是的。相同的权限会同时应用于文件和目录。**

chmod -R 644 my_project/

这会从目录中移除执行权限。



**更安全的方法:**

find my_project/ -type d -exec chmod 755 {} \; find my_project/ -type f -exec chmod 644 {} \;

### Q5. 我一直收到“Permission denied。”错误。该检查什么?



**A. 验证以下内容:**



* 如果文件正在执行,则该文件具有执行权限
* 您是所有者或具有写入权限
* 目录具有执行权限
* 如果需要,则您具有 sudo 权限



### Q6. 我想共享文件但防止编辑。该怎么做?



**A. 使用权限 `644` 或 `444`。**

chmod 644 share.txt

* 644:其他人只能读取
* 444:每个人都只有只读访问权限



### Q7. 我不小心更改了权限。如何恢复它们?



**A. 与正确配置的文件进行比较。**

ls -l /path/to/correct_file “`

使用 chmod 重新应用权限。理想情况下,为您的项目记录默认权限。

10. 总结

为什么理解 chmod 和权限很重要

本文解释了 chmod 命令以及符号权限的含义,例如 -rw-r--r--,这些在 Linux 和类 Unix 系统中被广泛使用。

这些概念对于确保系统安全、操作稳定性和准确的文件共享至关重要。

关键要点

  • chmod 修改文件和目录的访问权限
  • -rw-r--r-- 表示所有者可以读取和写入,其他人只能读取
  • 数字(644)和符号(-rw-r--r--)表示形式是等价的
  • 可以使用数字或符号模式设置权限
  • ls -l 用于验证权限
  • Nautilus、WinSCP 和 FileZilla 等 GUI 工具也可以管理权限
  • 不正确的权限通常会导致“Permission denied”错误
  • 常用权限模式背后总有原因

“最佳”权限取决于上下文

没有适用于所有情况的通用权限设置。
权限应始终根据用途、用户和所需安全级别来选择。

最终建议

虽然权限起初可能看起来复杂,但掌握 chmod 可以让您主动预防问题并安全地操作系统。

始终问自己:
谁应该访问此文件,以及出于什么目的?
保持这种视角将帮助您构建安全可靠的 Linux 环境。

侍エンジニア塾