当前位置:首页>Linux>Linux 基础:文件权限详解

Linux 基础:文件权限详解

  • 2026-09-16 07:05:56
Linux 基础:文件权限详解

在 Linux 系统中,文件权限是保障系统安全与用户数据隔离的重要机制。无论是普通用户还是系统管理员,理解文件权限的工作原理都至关重要。

一、文件权限的基本概念

Linux 是一个多用户操作系统,每个文件和目录都归属于特定的用户(User)和用户组(Group)。为了控制谁可以对这些文件进行何种操作,系统引入了权限模型。

三类访问者

  • 所有者:创建文件的用户。
  • 所属组:文件所属的用户组,通常由所有者指定。
  • 其他用户:既不是所有者,也不在所属组中的用户。

三种基本权限

  • 读(r, Read):
    • 对文件:允许查看内容(如 cat file)。
    • 对目录:允许列出目录内容(如 ls dir)。
  • 写(w, Write):
    • 对文件:允许修改内容(如 echo "text" > file)。
    • 对目录:允许在目录中创建、删除或重命名文件。
  • 执行(x, Execute):
    • 对文件:允许作为程序运行(如 ./script.sh)。
    • 对目录:允许进入该目录(如 cd dir)。
“

⚠️ 注意:对目录而言,执行权限(x)是进入目录的前提,即使有读权限但没有执行权限,也无法访问目录内的文件。

二、权限的表示方式

Linux 中权限有两种表示法:符号表示法 和 数字(八进制)表示法。

符号表示法(如 -rwxr-xr--)

使用 ls -l 命令可查看详细权限信息:

$ ls -l example.txt
-rw-r--r-- 1 alice dev 0 Feb 6 09:00 example.txt

解析第一列 -rw-r--r--:

  • 第1位:文件类型(- 表示普通文件,d 表示目录,l 表示链接等)。
  • 接下来的9位分为三组,每组3位:
    • 第2-4位:所有者的权限(rw- → 可读可写)
    • 第5-7位:所属组的权限(r-- → 只读)
    • 第8-10位:其他用户的权限(r-- → 只读)

数字(八进制)表示法

每种权限对应一个数值:

  • r = 4
  • w = 2
  • x = 1

将每组权限相加,得到一个 0–7 的数字。例如:

  • rwx = 4+2+1 = 7
  • rw- = 4+2+0 = 6
  • r-x = 4+0+1 = 5
  • --- = 0

因此,-rw-r--r-- 对应的数字权限为 644。

常见权限组合:

符号数字含义
rwx
7
读+写+执行
rw-
6
读+写(常用于普通文件)
r-x
5
读+执行(常用于脚本或目录)
r--
4
只读
---
0
无权限

三、修改文件权限:chmod 命令

使用 chmod(change mode)命令修改权限。

数字方式

chmod 755 script.sh    # 所有者:rwx,组和其他:r-x
chmod 644 document.txt # 所有者:rw-,组和其他:r--

符号方式

格式:chmod [who][operator][permission] file

  • who:u(用户)、g(组)、o(其他)、a(全部)
  • operator:+(添加)、-(移除)、=(设置)
  • permission:r、w、x

示例:

chmod u+x script.sh      # 给所有者添加执行权限
chmod g-w file.txt       # 移除组的写权限
chmod o=r file.txt       # 设置其他用户只有读权限
chmod a+x program        # 所有人都可执行

四、修改文件所有者和所属组:chown 与 chgrp

chown(change owner)

chown alice file.txt           # 更改所有者为 alice
chown alice:dev file.txt       # 同时更改所有者和组
chown :dev file.txt            # 仅更改组(保留原所有者)
“

需要 root 权限或文件当前所有者才能操作。

chgrp(change group)

chgrp developers project/      # 更改目录所属组

五、特殊权限(进阶)

除了基本权限,Linux 还支持三种特殊权限:

SUID(Set User ID)— 作用于可执行文件

  • 当用户执行该文件时,以文件所有者的身份运行。
  • 权限位显示为 s(代替所有者的 x)。
  • 示例:/usr/bin/passwd 允许普通用户修改 /etc/shadow。
chmod u+s program
# 权限变为:-rwsr-xr-x

SGID(Set Group ID)

  • 作用于文件:执行时以文件所属组身份运行。
  • 作用于目录:在该目录下创建的新文件自动继承目录的组。
  • 权限位显示为 s(在组权限位置)。
chmod g+s shared_dir/
# 目录权限:drwxrwsr-x

Sticky Bit(粘滞位)

  • 作用于目录:只有文件所有者或 root 才能删除该目录下的文件。
  • 常用于 /tmp 目录。
  • 权限位显示为 t(代替其他用户的 x)。
chmod +t /shared/
# 权限变为:drwxrwxrwt

六、实用建议与最佳实践

  1. 普通文件通常设为 644(所有者可读写,其他人只读)。
  2. 脚本或可执行程序设为 755。
  3. 敏感配置文件(如密码文件)应设为 600(仅所有者可读写)。
  4. 共享目录可配合 SGID + 775 使用,确保组内协作。
  5. 避免随意使用 777,这会带来严重安全风险!

七、常见问题

文件默认的权限是什么?

在大多数情况下,新创建的文件的默认权限是由系统的 umask 值来决定的。umask 是一个权限掩码,用于确定新文件的默认权限。它指定了在创建文件或目录时从最大权限中减去的权限。通常,umask 的默认值是 022。

默认情况下,文件的权限通常是 666 减去 umask 值,目录的权限通常是 777 减去 umask 值。以默认的 umask 值 022 为例:

  • 新创建的文件权限:666 - 022 = 644
  • 新创建的目录权限:777 - 022 = 755
“

这意味着新创建的文件将具有 -rw-r--r-- 的权限,新创建的目录将具有 drwxr-xr-x 的权限。 umask 值可以通过 umask 命令来查看或设置。

常见的目录和文件权限?

  1. 文件夹(目录)权限:
    • 755 (rwxr-xr-x):这是最常见的文件夹权限设置。所有者具有读、写和执行权限,其他用户和组只有执行权限。这意味着所有者可以对文件夹进行创建、删除和读取操作,而其他用户和组只能进入该文件夹。
    • 700 (rwx------):这种设置将文件夹的写和执行权限限制为所有者权限。只有所有者可以对文件夹进行任何操作,其他用户和组无法访问。
    • 777 (rwxrwxrwx):这种设置允许所有用户具有对文件夹的完全访问权限,包括读、写和执行。这种权限设置通常在需要共享文件夹或者临时文件夹的情况下使用,但在安全性上存在风险。
  2. 文件权限:
    • 644 (rw-r--r--):这是最常见的文件权限设置。所有者具有读和写权限,其他用户和组只有读权限。这意味着所有者可以编辑文件,其他用户和组只能读取文件内容。
    • 600 (rw-------):这种设置将文件的写权限限制为所有者权限。只有所有者可以对文件进行任何操作,其他用户和组无法访问。
    • 755 (rwxr-xr-x):有时可执行文件会被设置为755权限,这允许所有者执行文件,而其他用户和组只能读取和执行文件。

常见的修改目录和文件的权限?

# 普通文本文件(如 .txt, .conf),所有者可读写,其他人只读
chmod 644 config.txt
# 敏感配置文件(如数据库密码),仅所有者可读写,防止泄露
chmod 600 .env
# Shell 脚本 / 可执行程序,所有者可修改+执行,他人可读+执行
chmod 755 script.sh
# 仅自己使用,完全私有,他人无法访问
chmod 700 script.sh
# 快速添加执行权限,自动保留原有读写,加 x
chmod +x script.sh

#
 递归给目录给权限
chmod -R 644 /opt/test

最新文章

随机文章