当前位置:首页>Linux>Linux 文件系统管理全攻略:权限、ACL、隐藏属性一次性讲透

Linux 文件系统管理全攻略:权限、ACL、隐藏属性一次性讲透

  • 2026-10-11 06:25:23
Linux 文件系统管理全攻略:权限、ACL、隐藏属性一次性讲透

一、文件系统基础

常见文件系统

Ext4:Ext3升级版,RHEL 6默认,最大支持 1EB 存储容量,无限子目录XFS:高性能日志文件系统,RHEL 7/8 默认,最大支持 18EB,openEuler 也在用

核心目录速览

目录
存放内容
/
根目录,所有目录的起点
/bin
基础命令(ls、cp、mv等)
/boot
内核及启动文件
/dev
设备文件(硬盘、光驱等)
/etc
系统配置文件(passwd、fstab等)
/home
普通用户主目录
/root
root 用户主目录
/var
日志、邮件等变动数据
/tmp
临时文件(所有用户可读写)
/usr
用户安装的软件和库

绝对路径 vs 相对路径

绝对路径:从根目录 / 开始写,如 /home/user1/test.txt相对路径:相对于当前位置,. 当前目录,.. 上级目录

cd /var/log        # 绝对路径cd ../var/log      # 相对路径(从当前位置退一级再进var/log)

Linux 没有"扩展名"概念,文件类型不取决于后缀;文件名严格区分大小写(sample.txt 和 Sample.txt 是不同文件)。

二、文件权限详解

以 ll 命令输出的这一行为例,把每个字段拆开看:

drwxr-xr-x   2   root   root   4096   Sep 1 13:54   webmin

ll 输出拆解:7组信息

组
示例
含义
第1组
drwxr-xr-x
文件类型 + 权限(所有者·组·其他人)
第2组
2
硬链接数(指向该 i-node 的文件数)
第3组
root
文件所有者
第4组
root
文件所属组
第5组
4096
文件大小(字节)
第6组
Sep 1 13:54
最后修改时间
第7组
webmin
文件名(. 开头为隐藏文件)

第1组详解:文件类型 + 权限位

d    rwx    r-x    r-x类型     所有者   所属组   其他人

首字符
含义
首字符
含义
-
普通文件
d
目录
l
链接文件(软链接)
b
块设备(硬盘等)
c
字符设备(键盘等)
s
套接字
p
管道文件

后9位每3个一组:r=读(4)、w=写(2)、x=执行(1),没有权限显示为 -。

三、修改权限:chmod 的两种写法

方法一:数字表示法(最常用)

r=4, w=2, x=1,三者相加得到权限数字。例如 rwx=7, rw-=6, r--=4。

目标:所有者和组 rw-(6),其他人 r--(4)→ 664

chmod 664 /etc/filell /etc/file-rw-rw-r--. 1 root root 0 May 20 23:15 /etc/file

方法二:文字表示法

用户标识:u(所有者) g(所属组) o(其他人) a(全部)操作符号:+ 添加   - 减去   = 直接设定权限字母:r 读   w 写   x 执行

# 数字法664 = 文字法chmod u=rw,g=rw,o=r /etc/file# 设置 -rwxr-xr-xchmod u=rwx,go=rx .bashrc

特殊权限:SUID

chmod u+s /etc/file    # 设SUID,执行时以文件所有者身份运行# 效果:-rwSrw-rw-.   (所有者执行位变成大写S)

四、默认权限与隐藏属性

umask:新建文件/目录的默认权限

umask 是从"满权限"中减去的一个掩码值。默认 umask=022 时:文件 = 666-022 = 644,目录 = 777-022 = 755。

umask          # 查看当前值 → 0022umask 002       # 改为002,组成员也可写touch test3; mkdir test4# test3: -rw-rw-r-- (664)   test4: drwxrwxr-x (775)

chattr:设置文件隐藏属性

+i:文件锁定,连 root 都不能删、改名、修改(只能 root 设和取消)+a:只能追加数据,不能覆盖或截断(适合日志文件)

chattr +i attrtest    # 加锁rm attrtest           # 无法删除!不允许的操作chattr -i attrtest    # 解锁后才能删lsattr attrtest       # 查看隐藏属性 → --S-ia----------

lsattr 常用参数:-a 显示隐藏文件属性,-d 仅列目录本身属性,-R 递归子目录。

五、ACL 访问控制列表

传统 rwx 只能对所有者·组·其他人三类设权限。如果想让某个指定用户单独拥有特殊权限,就要用 ACL。

setfacl:设置 ACL

# 让 yangyun 对 /root 有 rwx 权限(递归 -R)setfacl -Rm u:yangyun:rwx /root# 此时 ll -ld /root 尾部变为 + 号,表示启用了 ACLdr-xrwx---+ 14 root root 4096 May 4 2017 /root

getfacl:查看 ACL

getfacl /root# file: root# owner: root# group: rootuser::r-xuser:yangyun:rwx     # ← 单独给 yangyun 的权限group::r-xmask::rwxother::---

六、企业实战:SGID 共享目录

场景:alex 和 arod 同属 project 组,需共享 /srv/ahome 目录开发权,其他人不能访问。

第1步:建用户、建组、建目录

groupadd projectuseradd -G project alexuseradd -G project arodmkdir /srv/ahome

第2步:设基本权限(出问题了!)

chgrp project /srv/ahomechmod 770 /srv/ahome# 结果:drwxrwx--- 2 root project 4096 /srv/ahome# 问题:alex 建的文件属主是 alex:alex,arod 改不了!# arod 对这个文件只是"其他人",只有 r 权限

根本原因:新建文件的所属组默认是创建者的主组(alex),不是 project。所以 arod 被视为"其他人"。

第3步:加 SGID 解决(关键一步!)

SGID=2000,设在目录上后,该目录下新建的文件自动继承目录的所属组。

chmod 2770 /srv/ahome    # 2=SGI# 结果:drwxrws--- 2 root project 4096 /srv/ahome# 测试:alex 再建文件su - alex; cd /srv/ahome; touch 1234ll 1234-rw-rw-r-- 1 alex project 0 Sep 29 22:53 1234# 成功了!所属组是 project,arod 也能 rw 了!

完整解决方案总结:groupadd → useradd -G → mkdir → chgrp → chmod 2770 → umask 002加上 umask=002 让组成员也能写,和 SGID 搭配使用效果最佳。

总结:命令速查表

命令
核心功能
常用示例
ll / ls -l
查看文件详情+权限
ll /etc/passwd
chmod
修改文件权限
chmod 755 file   chmod u+x file
chown
修改文件所有者
chown user:group file
chgrp
修改文件所属组
chgrp project /srv/ahome
umask
设置默认权限掩码
umask 002
chattr
设置隐藏属性
chattr +i file(锁定)
lsattr
查看隐藏属性
lsattr file
setfacl
设置 ACL 规则
setfacl -m u:user:rwx file
getfacl
查看 ACL 规则
getfacl /root

记住权限层次:① 基础 rwx(chmod) → ② 特殊权限 SUID/SGID(chmod 4xxx/2xxx) → ③ 默认掩码 umask → ④ 隐藏属性 chattr → ⑤ ACL 细粒度控制(setfacl)这 5 层从粗到细,覆盖了 Linux 文件安全的所有场景。

文件权限是 Linux 安全的第一道防线。把 rwx 吃透,再理解 SGID 解决共享目录的思路,日常运维就够用了。建议收藏,当速查手册用。

编辑:🍀七七不吃糖

最新文章

随机文章