Ext4:Ext3升级版,RHEL 6默认,最大支持 1EB 存储容量,无限子目录XFS:高性能日志文件系统,RHEL 7/8 默认,最大支持 18EB,openEuler 也在用
| |
| / | |
| /bin | |
| /boot | |
| /dev | |
| /etc | |
| /home | |
| /root | |
| /var | |
| /tmp | |
| /usr | |
绝对路径:从根目录 / 开始写,如 /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
d rwx r-x r-x类型 所有者 所属组 其他人
后9位每3个一组:r=读(4)、w=写(2)、x=执行(1),没有权限显示为 -。
方法一:数字表示法(最常用)
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
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)
+i:文件锁定,连 root 都不能删、改名、修改(只能 root 设和取消)+a:只能追加数据,不能覆盖或截断(适合日志文件)
chattr +i attrtest # 加锁rm attrtest # 无法删除!不允许的操作chattr -i attrtest # 解锁后才能删lsattr attrtest # 查看隐藏属性 → --S-ia----------
lsattr 常用参数:-a 显示隐藏文件属性,-d 仅列目录本身属性,-R 递归子目录。
传统 rwx 只能对所有者·组·其他人三类设权限。如果想让某个指定用户单独拥有特殊权限,就要用 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 /root# file: root# owner: root# group: rootuser::r-xuser:yangyun:rwx # ← 单独给 yangyun 的权限group::r-xmask::rwxother::---
场景:alex 和 arod 同属 project 组,需共享 /srv/ahome 目录开发权,其他人不能访问。
groupadd projectuseradd -G project alexuseradd -G project arodmkdir /srv/ahome
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 | | |
| chmod | | chmod 755 file chmod u+x file |
| chown | | |
| chgrp | | |
| umask | | |
| chattr | | |
| lsattr | | |
| setfacl | | setfacl -m u:user:rwx file |
| getfacl | | |
记住权限层次:① 基础 rwx(chmod) → ② 特殊权限 SUID/SGID(chmod 4xxx/2xxx) → ③ 默认掩码 umask → ④ 隐藏属性 chattr → ⑤ ACL 细粒度控制(setfacl)这 5 层从粗到细,覆盖了 Linux 文件安全的所有场景。
文件权限是 Linux 安全的第一道防线。把 rwx 吃透,再理解 SGID 解决共享目录的思路,日常运维就够用了。建议收藏,当速查手册用。