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

Linux | 文件权限

一. 文件权限的基本概念

        Linux 是多用户、多任务操作系统,为了区分不同用户对文件的操作权限,引入了用户身份权限类型的概念

  • 用户身份分类
    • 所有者(Owner):创建文件 / 目录的用户,对文件拥有最高控制权。
    • 所属组(Group):文件所属的用户组,组内用户共享部分权限。
    • 其他人(Others):既不是所有者也不在所属组的其他用户。
  • 权限类型
    • 读取(r):允许查看文件内容(对目录而言,允许列出目录内的文件)。
    • 写入(w):允许修改文件内容(对目录而言,允许创建、删除、重命名目录内文件)。
    • 执行(x):允许运行可执行文件(对目录而言,允许进入该目录)。

二. 权限的表示方式

2.1 符号表示法

        通过 r(读取)、w(写入)、x(执行)和 -(无权限)组成。一共有10个字符,第一个代表文件类型。从第二个符号开始 ,每组三个字符,一共有三组,分别代表所有者、所属组、其他人的权限

        举例:-rwxr-xr--

  • 文件类型:-(-表示普通文件,d表示目录,l表示软链接)。
  • 所有者(2-4):rwx(可读、可写、可执行)
  • 所属组(5-7):r-x (可读、不写、可执行)
  • 其他人(8-10):r-- (只读,不写、不执行)

2.2 符号表示法的特殊权限

        特殊权限:用 s、t 代替对应权限位中的x

  • Set UID(SUID,4000)
    • 仅对可执行文件有效,当用户执行设置了 SUID 的文件时,会临时获得该文件所有者的权限(而非执行者自身的权限)。
    • 执行结束后,权限自动恢复为用户原有权限。
    • s 代替第4位的 x
  • Set GID(SGID,2000)
    • 对可执行文件:执行文件时,临时获得文件所属组的权限(类似 SUID,但针对组)。
    • 对目录:在该目录下新建的文件或子目录,会自动继承目录的所属组(而非创建者的默认组),确保组内权限一致性。
    • s 代替第7位的 x
  • Sticky Bit(粘滞位,1000)
    • 目录内的文件只能被其所有者或 root 删除,其他用户即使对目录有w权限,也不能删除他人文件。
    • t 代替第10位的 x

2.3 数字表示法 

        用数字代表权限,每个权限对应一个数值,求和表示组合权限。r = 4 , w = 2 , x = 1 , - = 0 ,从第二位开始,每三个数相加:

举例:-rwxr-xr-- ,权限则是754(4+2+1=7,4+0+1=5,4+0+0=4)

2.4 数字表示法的特殊权限

        Linux权限的数字表示法中一共有4个数字,第一位表示特殊权限,后三位表示基础权限。通过2.2可知 SUID是4000 ,SGID是2000,Sticky Bit是1000。

举例:

  • 4755 = 4000 + 755 : -rwsr-xr-x ,第4位的x改为s
  • 2770 = 2000 + 770 : -rwxrws--- ,第7位的x改为s
  • 1777 = 1000 + 777 : -rwxrwxrwt ,第10位的x改为t

http://www.dtcms.com/a/305217.html

相关文章:

  • 面试刷题平台项目总结
  • ERROR c.a.c.n.c.NacosPropertySourceBuilder
  • 对讲机该怎么选?2025建议买的对讲机品牌
  • 并查集介绍及典型应用和编程题
  • 专线与专线之间的区别
  • Docker初学者需要了解的几个知识点(二):Docker、容器镜像
  • 2025年运维相关面试题
  • 前端手写贴
  • 北方公司面试记录
  • A1324LLHLX-T Allegro:高精度线性霍尔效应传感器 ±1%精度+4.5mV/G超高灵敏度
  • python优秀案例:基于机器学习算法的景区旅游评论数据分析与可视化系统,技术使用django+lstm算法+朴素贝叶斯算法+echarts可视化
  • 域名常见问题集(九)——域名市场介绍
  • VNC和RPC加固措施
  • Redis+JWT 认证管理最佳实践
  • MybatisPlus-20.插件功能-通用分页实体与MP转换
  • 推动技术的发展和创新:编程是IT行业中最为基础和核心的技能之一
  • 计算机网络五层模型
  • echarts(4.9.0)x轴标签过长,截取指定长度显示三个点,鼠标放上去显示完整标签示例
  • “影子插桩”:利用 LLVM 在二进制层面对 dlsym 调用做无痕监控(C/C++实现)
  • 前端基础之《Vue(26)—Vue3两种语法范式》
  • C++(面向对象之继承、多态)
  • C++20协程实战:高效网络库、手机终端、多媒体开发开发指南
  • 嵌入向量与向量数据库:AI时代的语义搜索革命
  • 【Git】分支
  • 前端接入DeepSeek
  • 数据结构(6)单链表算法题(下)
  • 如何使用Spring AI框架开发mcp接口并发布成微服务
  • C51 中断
  • 笔试——Day22
  • 【Android】日期选择器