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

Linux 文件与目录属性管理总结

Linux 文件与目录属性管理

一、查看文件属性

使用ls -l命令可查看文件 / 目录的详细属性,例如:
drwxr-xr-x. 3 root root 16 May 28 09:28 home

各字段含义:

  • d:文件类型(d = 目录,-= 普通文件,l = 链接等)
  • rwxr-xr-x:权限位(分 3 组,分别对应所有者、所属组、其他用户)
  • 3:引用计数(被引用的次数)
  • root:所有者(文件归属的用户)
  • root:所属组(文件归属的用户组)
  • 16:大小(单位:字节 B)
  • May 28 09:28:创建 / 修改时间
  • home:文件名 / 目录名
二、文件权限基础

权限分为读(r)、写(w)、执行(x),对应字符与数字表示:

权限字符表示数字表示含义(文件)含义(目录)
r4查看文件内容列出目录内容
w2修改文件内容创建 / 删除目录内文件
执行x1运行文件(脚本 / 程序)进入目录(cd)

权限组合示例:

  • rwx(4+2+1=7):读写执行权限
  • rw-(4+2=6):读写权限
  • r-x(4+1=5):读和执行权限
三、修改文件权限(chmod 命令)

用于修改所有者、所属组或其他用户的权限,支持两种方式:

1. 数值方式

格式:chmod [数值] 文件名
数值由 3 位组成(分别对应所有者、所属组、其他用户),每一位为权限数字之和

示例:

  • chmod 777 test1:所有者、所属组、其他用户均获读写执行权限(7=4+2+1)
  • chmod 640 test2:所有者读写(6),所属组读(4),其他用户无权限(0)
2. 字母方式

格式:chmod [用户类型][操作][权限] 文件名

  • 用户型
    a(所有用户)、u(所有者)、g(所属组)、o(其他用户)
  • 操作
    +(增加权限)、-(移除权限)、=(设置唯一权限)

示例:

  • chmod g+w test3:给所属组增加写权限
  • chmod o-rwx test4:移除其他用户的所有权限
  • chmod u+x test5:给所有者增加执行权限
  • chmod a+rw test6:所有用户增加读写权限
  • chmod ug=r test7:所有者和所属组仅保留读权限
3. 递归修改目录权限

-R参数可对目录及其子目录 / 文件批量修改权限:
chmod -R g+w /home/testdir/:给/home/testdir/目录下所有内容的所属组增加写权限

四、修改所有者 / 所属组(chown、chgrp)
  • chown:修改所有者(可同时修改所属组)
  • chgrp:仅修改所属组
  • -R参数递归修改目录内容
常用命令:
  • chown 用户名 文件名:修改所有者
    例:chown linux /home/test6(将 test6 的所有者改为 linux)
  • chown 用户名:组名 文件名:同时修改所有者和所属组
    例:chown linux:linux /home/test7(所有者和所属组均改为 linux)
  • chgrp 组名 文件名:修改所属组
    例:chgrp linux /home/test8(将 test8 的所属组改为 linux)
  • 递归修改:chgrp -R linux /home/test9/(递归修改 test9 目录下所有内容的所属组为 linux)
五、特殊权限(suid、sgid、sticky)

特殊权限在普通权限位前增加一位,用于特殊场景:

1. suid(u+s,数值 4)
  • 作用:应用于二进制文件,执行该文件时以文件所有者身份运行(而非执行者身份)
  • 设置:chmod u+s /usr/bin/mkdirchmod 4755 /usr/bin/mkdir
2. sgid(g+s,数值 2)
  • 作用:
    • 对二进制文件:执行时以所属组身份运行
    • 对目录:目录内新建的文件 / 目录自动继承该目录的所属组
  • 设置:chmod g+s /tmp/testchmod 2755 /tmp/test
3. sticky(o+t,数值 1)
  • 作用:应用于目录,拥有写入权限的用户(root 除外)仅能删除自己创建的文件 / 目录
  • 设置:chmod o+t /tmp/testchmod 1777 /tmp/test
六、默认权限与 umask

新建文件 / 目录的默认权限由umask(权限掩码)决定,规则:

  • 目录最大默认权限为 777,文件为 666(默认无执行权限)
  • 实际权限 = 最大权限 - umask 值
不同用户的默认 umask:
  • root 用户:umask=0022
    • 新建目录:777 - 022 = 755
    • 新建文件:666 - 022 = 644
  • 普通用户:umask=0002
    • 新建目录:777 - 002 = 775
    • 新建文件:666 - 002 = 664
七、ACL 权限(访问控制列表)

用于给特定用户 / 组赋予特定权限(突破所有者 / 所属组 / 其他用户的三类限制),通过setfacl命令管理

常用操作:
  1. 给特定用户设置权限:
    setfacl -m u:用户名:权限 文件/目录
    例:setfacl -m u:admin:rw a(允许 admin 用户读写文件 a)
  2. 给特定组设置权限:
    setfacl -m g:组名:权限 文件/目录
    例:setfacl -m g:lisi:rw a(允许 lisi 组读写文件 a)
  3. 目录权限及继承(新建文件 / 目录自动继承权限):
    • 给目录设置权限:setfacl -m u:admin:rwx b/
    • 设置继承:setfacl -m d:u:admin:rwx b/(d 表示 default,默认继承)
  4. 移除权限:
    • 删除目录的默认继承权限:setfacl -k b/
    • 删除文件的所有 ACL 权限:setfacl -b a
http://www.xdnf.cn/news/17078.html

相关文章:

  • IPIDEA:全球领先的企业级代理 IP 服务商
  • Go语言 逃 逸 分 析
  • JVM(Java虚拟机)运行时数据区
  • 【测试】⾃动化测试概念篇
  • 服务器突然之间特别卡,什么原因?
  • 晨控CK-GW08S与汇川AC系列PLC配置Ethernet/IP通讯连接手册
  • 开疆智能ModbusTCP转Profient网关连接ER机器人配置案例
  • 第二十三天(APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围)
  • 红队信息收集工具oneforall子域名搜集爆破工具安装使用教程详细过程
  • Python-初学openCV——图像预处理(七)——模板匹配、霍夫变换
  • Nestjs框架: Node.js 多环境配置策略与 dotenv 与 config 库详解
  • Node.js高并发接口下的事件循环卡顿问题与异步解耦优化方案
  • open-webui pipelines报404, ‘Filter pipeline.exporter not found‘
  • MySQL 约束知识体系:八大约束类型详细讲解
  • stanford cs336 assignment1 Byte-Pair Encoding (BPE) Tokenizer
  • Onnx模型部署到Arm64进行推理
  • 分布式光伏气象站:为分散电站装上 “智慧之眼”
  • 从医学视角深度解析微软医学 Agent 服务 MAI-DxO
  • Cursor国产平替重磅开源!离线研发AI助手,拒绝云端受制于人
  • 房屋租赁小程序租房小程序房产信息发布系统房屋租赁微信小程序源码
  • 基于Java的AI/机器学习库(Smile、Weka、DeepLearning4J)的实用
  • 人类学家与建筑师:解析 UX 研究与项目管理的需求分析差异​
  • CPP初识
  • 腾讯混元重磅开源:四款小尺寸模型全面发布
  • 消息系统技术文档
  • C++11 nullptr:解决空指针语义模糊的终极方案
  • 【机器人】VLN-R1 微调 | 增强训练 | 连续导航
  • 复现cacti的RCE
  • 数据结构学习(day01)
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——9. 接入真实硬件:驱动USB摄像头