wiki/运维/操作系统/Linux/笔记/13.文本权限.md
2026-04-08 15:02:24 +08:00

4.7 KiB
Raw Blame History

1、文件权限概览

Linux 文件权限控制的核心对象有三类:

  • u属主user
  • g属组group
  • o其他用户others

对应的基本权限有三种:

  • r:读,值为 4
  • w:写,值为 2
  • x:执行,值为 1

权限控制是 Linux 安全模型的基础之一,和文件访问、脚本执行、目录操作都直接相关。

2、文件权限与目录权限的区别

2.1 文件权限

普通文件来说:

  • r:可以读取文件内容
  • w:可以修改文件内容
  • x:可以把该文件作为程序执行

2.2 目录权限

目录来说,权限含义和普通文件不完全一样:

  • r:可以查看目录中的文件名列表
  • w:可以在目录中创建、删除、重命名文件
  • x:可以进入目录,也可以访问目录项的元数据

目录权限是很多初学者最容易搞混的地方。

3、ls -l 权限格式

root@lzc:/var/log# ls -l
-rw-r--r--  1 root root 0 Dec  5 00:00 alternatives.log

这一行的主要含义:

  • -:文件类型,表示普通文件
  • rw-:属主权限
  • r--:属组权限
  • r--:其他用户权限
  • 1:硬链接数
  • root:属主
  • root:属组
  • 0:文件大小
  • Dec 5 00:00:最近修改时间
  • alternatives.log:文件名

4、修改属主和属组

4.1 chown

用于修改文件属主,也可以同时修改属组。

chown root:root fileName

表示把文件的属主和属组都改为 root

常见选项:

  • -R:递归处理目录及其内部文件

4.2 chgrp

用于单独修改文件属组。

常见选项:

  • -R:递归处理

示例:

chgrp devops fileName

5、修改权限 chmod

chmod 用于修改文件或目录权限。

5.1 数字方式

常见组合:

  • 7 = rwx
  • 6 = rw-
  • 5 = r-x
  • 4 = r--

例如:

chmod 644 file.txt
chmod 755 script.sh

5.2 符号方式

可以使用 ugoa 搭配 +-= 设置权限。

示例:

chmod u+x script.sh
chmod g-w file.txt
chmod o-r file.txt

5.3 递归修改

chmod -R 755 dirName

对目录递归改权限时要非常谨慎,避免把文件和目录都改成不合适的权限。

6、默认权限 umask

umask 决定新建文件和目录时默认去掉哪些权限。

6.1 常见规则

  • 文件默认基准通常是 666
  • 目录默认基准通常是 777

因此:

  • 文件默认权限 ≈ 666 - umask
  • 目录默认权限 ≈ 777 - umask

6.2 常见默认值

  • root 常见默认值:022
  • 普通用户常见默认值:002022

6.3 永久生效

如果想长期修改 umask,通常写入:

  • /etc/profile
  • ~/.bashrc
  • ~/.profile

具体取决于系统和登录方式。

7、特殊权限

除了普通的 rwxLinux 还有 3 类常见特殊权限:

  • SUID
  • SGID
  • Sticky Bit

7.1 SUID

SUID 主要作用在可执行文件上。

效果:普通用户执行该程序时,会临时以文件属主的身份运行。

典型例子:

ls -l /bin/passwd

可能看到:

-rwsr-xr-x

其中属主执行位上的 s 就表示设置了 SUID。

7.2 SGID

SGID 有两种常见作用:

  • 作用在可执行文件上:以文件属组身份运行
  • 作用在目录上:新建文件会继承该目录的属组

这在团队共享目录里非常常见。

7.3 Sticky Bit

Sticky Bit 主要作用在目录上。

效果:目录中的文件通常只能被文件所有者root 删除。

典型例子:

ls -ld /tmp

可能看到:

drwxrwxrwt

最后的 t 就表示设置了 Sticky Bit。

8、特殊属性 chattrlsattr

除了权限位外Linux 还支持一些额外文件属性。

8.1 chattr

常见属性:

  • +i:不可删除、不可改名、不可修改
  • +a:只能追加内容,不能覆盖或删除

示例:

chattr +i important.conf
chattr +a app.log

8.2 lsattr

用于查看文件特殊属性。

lsattr important.conf

9、常见运维建议

  • 给脚本加执行权限前,先确认内容安全
  • 不要随意对系统目录做递归 chmod -R 777
  • 团队共享目录可考虑配合 SGID 使用
  • 核心配置文件可结合 chattr +i 防误删或误改
  • 处理目录权限时,一定要先区分“文件权限”和“目录权限”

10、小结

  • rwx 是 Linux 权限的基础
  • 文件权限和目录权限含义不同
  • chownchgrpchmod 是最常见的权限管理命令
  • umask 决定新建文件和目录的默认权限
  • SUID、SGID、Sticky Bit 是高频特殊权限知识点
  • chattrlsattr 用于管理更细粒度的文件属性