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

Linux文件元信息完全指南:权限、链接与时间属性

Linux文件元信息完全指南:权限、链接与时间属性

关键词inode SUID/SGID 硬链接/软链接 文件时间戳 权限管理


一、文件权限体系
  1. 基础权限(9位标识)

    -rwxr-xr--  # ls -l 输出示例
    
    • 三组权限:拥有者(u)/所属组(g)/其他用户(o)
    • 权限值
      • r (读) = 4
      • w (写) = 2
      • x (执行) = 1
  2. 特殊权限(高位标识)

    权限位作用场景效果设置命令
    SUID (4)可执行文件执行时以文件所有者身份运行 (e.g. /usr/bin/passwd)chmod u+s file
    SGID (2)可执行文件执行时以文件所属组身份运行chmod g+s file
    目录新建文件自动继承目录的所属组(覆盖用户主组)chmod g+s dir/
    Sticky Bit (1)目录用户仅能删除自己创建的文件 (e.g. /tmp)chmod +t dir/

    权限显示

    • SUID: -rwsr-xr-x
    • SGID: -rwxr-sr-x
    • Sticky: drwxrwxrwt

二、文件链接机制
类型本质特点命令
硬链接同一inode的多个路径1. 与源文件inode相同
2. 不可跨文件系统
3. 删除源文件不影响链接
ln source link
软链接独立inode的指针文件1. 存储源文件路径
2. 可跨文件系统
3. 源文件删除后链接失效
ln -s source link

显示标识

-rw-r--r-- 2 user group 4096 Jan 1 10:00 hardlink  # 硬链接(第二列为链接计数)
lrwxrwxrwx 1 user group   11 Jan 1 10:00 softlink -> source.txt  # 软链接

三、用户与组信息
  1. 元数据存储位置

    • 文件所有者st_uid → 映射 /etc/passwd
    • 文件所属组st_gid → 映射 /etc/group
  2. 关键命令

    stat filename      # 查看文件元信息
    ls -n filename     # 显示UID/GID而非用户名
    

四、文件大小与磁盘占用
struct stat {off_t st_size;    // 文件实际大小(字节)blkcnt_t st_blocks; // 占用磁盘块数量(通常每块512字节)
};

示例

  • 1字节文件可能占用4KB磁盘空间(受块大小影响)

五、时间戳详解
类型简称触发条件查看命令
Accessatime读取文件内容ls -lu
Modifymtime修改文件内容ls -l
Changectime修改元信息(权限/所有者等)ls -lc

时间转换代码示例(C语言):

#include <sys/stat.h>
#include <time.h>struct stat sb;
stat("file.txt", &sb);struct tm *timeinfo = localtime(&sb.st_mtime);  // 解析mtime
char buffer[80];
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", timeinfo);  // 格式化为字符串
printf("Last Modified: %s\n", buffer);

六、最佳实践
  1. 权限安全
    • 慎用SUID位,避免普通用户获得root权限
    • 共享目录使用SGID+Sticky Bit(如团队协作目录)
  2. 时间戳优化
    • 频繁读场景可关闭atime提升性能(mount -o noatime
  3. 链接选择
    • 备份用硬链接(节省空间),快捷访问用软链接

相关文章:

  • 文本分类与聚类:让信息“各归其位”的实用方法
  • 用Python实现安全封装EXE文件加密保护工具
  • Windows IOCP(I/O Completion Port)模型详解
  • TCP 三次握手与四次挥手全流程详解
  • Android Studio 打 APK 包报错 Invalid keystore format 的解决方法
  • Linux运维新人自用笔记(Ubuntu磁盘命名规则、新磁盘分区、主流文件系统类型、mkfs命令格式化文件系统、临时和永久挂载、挂载报错、dd指令)
  • C++11 std::thread 多线程编程详解
  • 18年磨一剑!开利科技启动数字化增量投资新时代
  • 常见应用层协议介绍
  • MCP入门实战(Python版)
  • [C++] traits机制
  • 领域驱动设计(DDD)【2】之项目启动与DDD基本开发流程
  • AtCoder AT_abc411_c [ABC411C] Black Intervals
  • 多头注意力机制中全连接函数
  • 阿里云ACP认证-数据仓库
  • 如何优化HarmonyOS 5的分布式通信性能?
  • day44-硬件学习之arm启动代码
  • 3D可视化数字孪生智能服务平台-物联网智控节能控、管、维一体化技术架构
  • Shell编程中的Ansible常用模块
  • Rust 和 R 语言的十大应用领域
  • wordpress 批量修改分类/seo视频教学网站
  • 丹东公司做网站/seo网络推广软件
  • 怎么做网站内容调研/培训机构哪家最好
  • 建设银行网站怎么先无贷款呢/刷关键词排名seo
  • 法律门户网站源码/软件培训班学费多少
  • 网站怎么做的精致一点/网页设计培训教程