一篇文章带你了解 Linux 权限管理

一篇文章带你了解 Linux 权限管理
最新回答
快乐很简单

2021-10-31 22:08:13

一篇文章带你了解 Linux 权限管理

Linux 权限管理是系统安全的核心机制,通过精细的权限分配可有效控制用户对文件和目录的访问。本文将从权限表示、修改命令、权限作用及默认权限规则四个方面系统介绍 Linux 权限管理。

一、权限表示规则

Linux 权限通过 ls -l 命令查看,输出格式如下:

-rw-rw-r--. 2 hepingfly hepingfly 0 2月 14 00:23 aa.txt
  • 第1位:文件类型标识

    - 表示普通文件

    d 表示目录

    l 表示软链接

  • 第2-4位:所有者权限(user)
  • 第5-7位:所属组权限(group)
  • 第8-10位:其他用户权限(other)
  • 末尾点号:表示受 SELinux 安全机制保护

权限符号含义:

  • r(read):读取权限
  • w(write):写入权限
  • x(execute):执行权限

二、权限修改命令

1. chmod:修改文件/目录权限

符号模式

chmod [ugoa][+-=][perms] 文件名
  • 用户身份

    u(所有者)

    g(所属组)

    o(其他用户)

    a(全部身份)

  • 赋予方式

    + 添加权限

    - 移除权限

    = 精确设置权限

示例

chmod u+r,g-w,o=x aa.txt # 所有者加读,所属组减写,其他用户设为执行chmod u=rw,g=rx,o=r aa.txt # 精确设置权限

数字模式

  • 4 = r
  • 2 = w
  • 1 = x
  • 权限值相加得到数字组合

常用数字权限

  • 644:所有者读写,其他用户只读(文件基本权限)
  • 755:所有者读写执行,其他用户读执行(目录基本权限)
  • 777:所有用户完全权限(生产环境慎用)

递归修改

chmod -R 755 /data/ # 递归设置目录及其内容权限2. chown:修改所有者/所属组chown [选项] 所有者:所属组 文件/目录

示例

chown root:root aa.txt # 修改所有者和所属组为rootchown -R hepingfly:dev /app/ # 递归修改目录所属关系

注意

  • 普通用户无权修改文件所有者
  • 需 sudo 权限执行跨用户修改
3. chgrp:修改所属组chgrp hepingfly aa.txt # 修改所属组为hepingfly

三、权限作用机制

1. 对文件的作用
  • 读(r):允许查看文件内容(如 cat、less 命令)
  • 写(w):允许修改文件内容(如 vim、echo 命令)?? 注意:写权限不包含删除权限,删除需对父目录有写权限
  • 执行(x):允许将文件作为程序运行(如脚本文件需此权限)
2. 对目录的作用
  • 读(r):允许查看目录内容(如 ls 命令)
  • 写(w):允许在目录中创建/删除文件(如 touch、rm 命令)
  • 执行(x):允许进入目录(如 cd 命令)

目录权限组合示例

  • 755:所有者可读写执行,其他用户可读执行(常用目录权限)
  • 700:仅所有者可访问(敏感目录权限)

四、默认权限规则(umask)

1. umask 作用

umask 通过屏蔽(减去)部分权限,控制新建文件/目录的默认权限。

2. 查看 umaskumask # 显示数字值(如002)umask -S # 显示符号表示(如u=rwx,g=rwx,o=rx)3. 默认权限计算
  • 文件默认最大权限:666(无执行权限)
  • 目录默认最大权限:777
  • 实际权限 = 最大权限 - umask

计算示例(umask=022):

  • 文件权限:666 - 022 = 644(-rw-r--r--)
  • 目录权限:777 - 022 = 755(drwxr-xr-x)
4. 修改 umask

编辑 /etc/profile 或 ~/.bashrc 文件:

# 普通用户默认umask 002,root用户默认022if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002else umask 022fi

生效方式

source /etc/profile # 重新加载配置

五、最佳实践建议

  1. 最小权限原则:仅授予必要权限(如Web目录设为755而非777)
  2. 敏感操作限制:关键文件设为600(仅所有者可读写)
  3. 定期审计:通过 ls -l 检查异常权限设置
  4. 避免递归误操作:使用 -R 参数前确认目标路径

通过合理配置 Linux 权限,可构建多层次的安全防护体系,既保障系统可用性,又防止未授权访问。