当前位置: 首页 > news >正文

Linux 权限管理入门:从基础到实践

文章目录

  • 引言
  • 一、Linux 权限管理概述
  • 二、文件权限值的表示方法
  • 三、文件访问权限的设置(chmod)
  • 四、file指令:快速识别文件类型
  • 五、目录的权限
  • 六、普通文件的权限
  • 七、权限总结
  • 八、粘滞位

引言

在 Linux 系统中,权限管理是确保多用户环境下文件和目录安全的核心机制。无论是普通用户还是系统管理员,理解权限概念都至关重要。本文将带你从零开始,逐步掌握 Linux 权限的核心知识,包括权限表示、设置方法、目录权限等,帮助你快速上手。

一、Linux 权限管理概述

  1. 权限的作用
    Linux 通过权限控制不同用户对文件和目录的访问权限(读、写、执行),确保:

    • 所有者:文件 / 目录的创建者,拥有最高控制权。
    • 组用户:同一用户组内的成员,权限由组设置决定。
    • 其他用户:不属于上述两类的用户,权限通常更严格。

例如,/etc/shadow文件仅 root 用户可读写,普通用户无法访问,保障系统安全。

二、文件权限值的表示方法

  1. 字母与数字对应
权限字母数字含义
r4查看内容(文件)/ 列出目录(目录)
w2修改内容(文件)/ 创建删除文件(目录)
执行x1运行程序(文件)/ 进入目录(目录,如cd)
  1. 权限字符串结构

使用 ls -l 查看文件权限,例如:

drwxrwxr-x 4 zkp zkp 4096 Jun  2 22:05 a
  • 第一位 - 表示文件类型(d 为目录,l 为链接)。
  • 接下来三组(rwx, rwx, r-x)分别对应 所有者其他用户 的权限。
  1. 数字计算示例
    • 755 表示:所有者 rwx(7=4+2+1),组和其他 r-x(5=4+1)。
    • 644 表示:所有者 rw-(6=4+2),组和其他 r--(4)。

三、文件访问权限的设置(chmod)

  1. 数字方式
chmod 755 file.txt  # 所有者rwx,组和其他rx
chmod 600 file.txt  # 所有者rw-,组和其他无权限
  1. 符号方式
    • u(用户)、g(组)、o(其他)、a(所有):
chmod u+x file.txt  # 给所有者添加执行权限
chmod g-w file.txt  # 移除组的写权限
chmod o+rwx file.txt  # 给其他用户添加全部权限(谨慎使用!)
  1. 实战举例
# 创建文件,默认权限644(umask影响,可忽略)
touch test.txt
ls -l test.txt  # -rw-r--r--# 给所有用户添加执行权限(文件需可执行时用,如脚本)
chmod a+x test.txt  # -rwxr-xr-x

四、file指令:快速识别文件类型

file test.txt  # 输出:test.txt: ASCII text(文本文件)
file /bin/ls   # 输出:/bin/ls: ELF 64-bit executable(二进制可执行文件)
file /etc      # 输出:/etc: directory(目录)

通过file指令,可快速判断文件是否为脚本、二进制程序或目录,辅助权限设置(如脚本需x权限)。

五、目录的权限

  1. 目录权限的特殊规则

    • 读(r):ls 可列出目录内容,但无法 cd 进入(需x)。
    • 写(w):可在目录内创建、删除文件(即使文件属主不是你,只要目录有w权限)。
    • 执行(x):允许 cd 进入目录,是访问目录内容的前提(无x则ls也会报错)。
  2. 示例:公共目录权限

mkdir public_dir
chmod 777 public_dir  # 所有用户可读写执行(危险!测试用)
cd public_dir          # 成功(x权限)
touch file1            # 成功(w权限)
ls                     # 成功(r权限)

实际中,公共目录(如/tmp)会设置粘滞位(见下文),避免误删他人文件。

六、普通文件的权限

  1. 普通文件权限的作用
    普通文件(如文本文件、脚本、二进制程序等)的权限直接控制对文件内容的访问:

    • 读(r):查看文件内容(如 cat file.txt)。
    • 写(w):修改文件内容(如 echo "new line" >> file.txt)。
    • 执行(x):运行文件(如脚本 ./script.sh 或二进制程序 ./a.out)。
  2. 权限设置示例

(1)文本文件权限(644)

touch notes.txt
chmod 644 notes.txt  # 或 chmod u=rw,g=r,o=r notes.txt
ls -l notes.txt      # -rw-r--r-- (所有者rw,组和其他r)

(2)可执行脚本权限(755)

echo "#!/bin/bash\necho Hello" > script.sh
chmod 755 script.sh  # 所有者rwx(可修改、运行),组和其他rx(可运行,不可修改)
./script.sh          # 执行成功(需x权限)

(3)敏感文件权限(600)

echo "secret: 12345" > secret.conf
chmod 600 secret.conf  # 仅所有者可读写(如 `vim secret.conf` 可修改,`cat secret.conf` 可查看)
  1. 权限与文件类型的关联
    • 文本文件:通常不需要 x 权限(除非是脚本,需手动添加 x)。
    • 二进制程序:编译后默认可能有 x 权限(如 gcc 生成的可执行文件)。
    • 脚本文件:需手动添加 x 权限(如 chmod +x script.sh),否则无法直接运行(提示 “Permission denied”)。

七、权限总结

  1. 普通文件权限重点:
    • 644:最常见的文本文件权限(所有者 rw,组和其他 r)。
    • 755:可执行文件(如脚本、程序)的典型权限。
    • 避免给普通文件设置w权限(尤其是系统文件),防止意外修改。

八、粘滞位

粘滞位仅对目录有效,但影响目录内普通文件的删除规则:

  • 无粘滞位时,目录有w权限的用户可删除任何文件(即使文件属主不同)。
  • 有粘滞位时(如/tmp),用户只能删除自己的文件,保护他人数据。
http://www.lqws.cn/news/76123.html

相关文章:

  • OpenCV4.4.0下载及初步配置(Win11)
  • PCA(K-L变换)人脸识别(python实现)
  • 从【0-1的HTML】第1篇:HTML简介
  • C++ - 标准库之 <sstream> ostringstream(ostringstream 概述、基本使用、清空内容、进阶使用)
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块
  • 系统调用与程序接口的关系
  • [leetcode] 二分算法
  • 线程间和进程间是如何进行通信
  • day17 leetcode-hot100-34(链表13)
  • Oracle的Hint
  • 【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
  • (九)学生写作画像可视化
  • 【PhysUnits】15.9 引入P1后的右移运算(shr.rs)
  • Vue-4-前端框架Vue基础入门之Vue的常用操作
  • 二叉树的构建与逆构建/二叉查找树与替罪羊树
  • 安全态势感知中的告警误报思考
  • SDU棋界精灵——实现硬件程序ESP32的FreeRTOS任务
  • day44 python 训练CNN网络并使用Grad-CAM可视化
  • NTP库详解
  • React Hooks 与异步数据管理
  • react实现markdown文件预览
  • A. We Need the Zero
  • NX869NX874美光固态颗粒NX877NX883
  • Vortex GPGPU的github流程跑通与功能模块波形探索(四)
  • FFmpeg移植教程(linux平台)
  • RSCUcaller
  • 12.1 GUI 事件处理
  • 《 C++ 点滴漫谈: 四十 》文本的艺术:C++ 正则表达式的高效应用之道
  • 前端高频面试题2:JavaScript/TypeScript
  • 迈向分布式智能:解析MCP到A2A的通信范式迁移