当前位置: 首页 > 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. 链接选择
    • 备份用硬链接(节省空间),快捷访问用软链接

http://www.lqws.cn/news/466417.html

相关文章:

  • jar is missing
  • ubuntu22.04下ch341驱动问题
  • Web攻防-XSS跨站Cookie盗取数据包提交网络钓鱼BEEF项目XSS平台危害利用
  • 广州华锐互动:以技术创新引领虚拟现实体验新高度
  • 私有规则库:企业合规与安全的终极防线
  • Go 语言 GMP 调度模型解析
  • 从流量为王到留量为王:开源链动2+1模式、AI智能名片与S2B2C商城小程序的协同创新路径
  • 推客小程序系统开发全攻略:构建社交电商新生态
  • 亚马逊认证考试系列 - 第一部份:基础服务 - AWS SAA C03
  • Maven-添加子模块
  • SylixOS 下的消息队列
  • SQLite 数据库操作完整指南
  • 逆向入门(14、15)程序逆向篇-Brad Soblesky.1-fty_crkme3
  • AWS-SAA 第二部份:安全性和权限管理
  • 操作系统进程与线程核心知识全览
  • Softhub软件下载站实战开发(六):软件配置面板实现
  • LeetCode 1432.改变一个整数能得到的最大差值:暴力模拟/贪心
  • 企业公用电脑登录安全管控的终极方案:ASP操作系统安全登录管控方案
  • c++ 虚继承
  • 【软考高级系统架构论文】论云上自动化运维及其应用
  • 嵌入式开发之嵌入式系统架构如何搭建?
  • Spring与SLF4J/Logback日志框架深度解析:从源码看日志系统设计
  • elasticsearch安装ik分词器
  • 3.1 Android NDK交叉编译FFmpeg
  • 领域驱动设计(DDD)【3】之事件风暴
  • React 重识
  • Seata模式
  • Spring AOP全面详讲
  • 从 Elasticsearch 集群中移除一个节点
  • `customRef` 在实战中的使用:防抖、计算属性缓存和异步数据获取