Linux文件系统使用多种标志来管理文件属性和权限,这些标志对于系统安全和功能控制至关重要。以下是常见的文件标志分类及详细说明:
1. 基本权限标志(chmod)
读写执行(rwx)
- `r`(读):允许查看文件内容或目录列表。
- `w`(写):允许修改文件或删除/创建目录内文件。
- `x`(执行):允许运行文件(如脚本)或进入目录。
- 权限分三组:所有者(u)、所属组(g)、其他用户(o),例如 `chmod u+x file` 为所有者添加执行权限。
数字模式
用三位八进制数表示权限,如 `755` 对应 `rwxr-xr-x`(所有者全权限,其他用户读执行)。
2. 特殊权限标志
SUID(Set User ID)
文件运行时临时获得所有者权限(如 `/usr/bin/passwd`),设置方式:`chmod u+s file`(数字模式 `4xxx`)。
风险:滥用可能导致提权漏洞。
SGID(Set Group ID)
类似SUID但针对组权限,目录下新文件继承父目录组,设置方式:`chmod g+s dir`(数字模式 `2xxx`)。
粘滞位(Sticky Bit)
仅允许所有者删除目录内文件(如 `/tmp`),设置方式:`chmod +t dir`(数字模式 `1xxx`)。
3. 文件属性标志(chattr)
通过 `lsattr` 查看,`chattr` 修改,用于Ext文件系统:
不可修改(i):`chattr +i file` 禁止任何修改,包括删除(需root权限)。
追加only(a):仅允许追加内容(如日志文件)。
不更新访问时间(A):减少磁盘I/O。
透明压缩(c):ZFS/Btrfs等文件系统支持自动压缩。
4. ACL(访问控制列表)
扩展传统权限,支持更精细的用户/组控制:
命令:`setfacl -m u:user:rwx file` 添加用户权限,`getfacl file` 查看。
默认ACL:通过 `setfacl -d` 设置目录下新文件的默认权限。
5. 扩展属性(xattr)
存储元数据,如安全标签或哈希值:
查看:`getfattr -d file`
设置:`setfattr -n user.comment -v "备注" file`
常用于SELinux(安全上下文)或防篡改校验。
6. 符号链接与硬链接
符号链接:类似快捷方式,跨文件系统,`ln -s target link` 创建。
硬链接:直接指向inode,仅限同一文件系统,删除原文件不影响链接。
7. 文件类型标识符
`ls -l` 首字符表示文件类型:
`-`:普通文件
`d`:目录
`l`:符号链接
`c`/`b`:字符/块设备
`p`:管道文件
`s`:套接字文件
8. 时间戳
atime:最后访问时间(可能被`noatime`挂载选项禁用)。
mtime:最后修改内容时间。
ctime:inode变更时间(如权限修改)。
理解这些标志有助于优化系统安全(如限制敏感文件)、调试权限问题或实现高级功能(如日志轮转)。实践中建议结合 `man chmod`、`man chattr` 等手册页深入学习。