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),对应字符与数字表示:

权限 字符表示 数字表示 含义(文件) 含义(目录)
r 4 查看文件内容 列出目录内容
w 2 修改文件内容 创建 / 删除目录内文件
执行 x 1 运行文件(脚本 / 程序) 进入目录(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
相关推荐
头铁的伦3 分钟前
QNX 网络模型
linux·网络·车载系统
小贾要学习3 分钟前
【Linux】TCP网络通信编程
linux·服务器·网络·c++·网络协议·tcp/ip
Q3_SkyAsh3 分钟前
【电子取证】——第三届“平航杯”电子数据取证竞赛服务器取证部分
服务器·电子取证
大白菜和MySQL7 分钟前
apache服务器部署简记
运维·服务器·apache
极创信息16 分钟前
信创系统认证服务怎么做?从适配到验收全流程指南
java·大数据·运维·tomcat·健康医疗
渣渣馬27 分钟前
rk3588s的firfly的linux的sdk版本
linux·运维·服务器
赵优秀一一1 小时前
FastAPI 核心
linux·python·fastapi
大数据新鸟1 小时前
NIO 三大核心组件
服务器·网络·nio
相醉为友2 小时前
024 嵌入式Linux应用开发——文字显示与freetype的使用显示
linux·运维·驱动开发
陳10302 小时前
Linux:进程的基本理解
linux·计算机外设·进程