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

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

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


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

    bash 复制代码
    -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

显示标识

bash 复制代码
-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. 关键命令

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

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

示例

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

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

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

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

相关推荐
tritone3 分钟前
使用阿贝云免费云服务器学习Vagrant,是一次非常顺畅的体验。作为一名开发者
服务器·学习·vagrant
wangjialelele4 分钟前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
SAP工博科技12 分钟前
SAP 公有云 ERP 多工厂多生产线数据统一管理技术实现解析
大数据·运维·人工智能
YongCheng_Liang15 分钟前
从零开始学虚拟化:桌面虚拟化(VDI)入门指南(架构 + 产品 + 部署)
运维·云计算
杜子不疼.22 分钟前
【Linux】库制作与原理(二):动态库的制作与使用
linux·运维·服务器
森焱森24 分钟前
嵌入式硬件工程师应知 白银快速分析报告
linux·c语言·arm开发·嵌入式硬件·去中心化
小白电脑技术29 分钟前
飞牛漏洞焦虑?别瞎折腾WAF了!用Lucky五步搞定“防爬墙”
服务器·网络·安全
消失的旧时光-194330 分钟前
Nginx 是什么?为什么它不写在代码里?——从 0 认识 Nginx
运维·服务器·nginx
BJ_Bonree31 分钟前
4月17日,博睿数据受邀出席GOPS全球运维大会2026 · 深圳站!
大数据·运维·人工智能
RisunJan32 分钟前
Linux命令-lpq(查看打印队列状态)
linux·运维·服务器