统计输出中的“十六进制原始模式”是什么?

统计输出中的“十六进制原始模式”是什么?

当使用 GNUstat探测文件系统时,有许多格式序列可用于--format/--printf参数;特别是这个

%f    Raw mode in hex

没有多大意义。与 %a 访问模式相比,某些东西可能具有(您可以通过 看到这一点stat --format '%f %a')原始模式为 41ed,但访问模式为 755,或者原始模式为 81a4,访问模式为 644。

那么“原始模式”是什么意思?

答案1

解读“十六进制原始模式”的含义有两个部分:第一个是它在十六进制,但访问模式一般描述于八进制:

41ed 16 = 40775 8 
81a4 16 = 100644 8

如果您要查看/tmp,它通常设置了限制删除标志(“粘滞位”):

$ ls -ld /tmp
drwxrwxrwt 17 根 根 4096 2012-05-31 13:45 /tmp
$ stat --format '%f %a' /tmp
43 号 1777

并转换:

43ff 16 = 41777 8

stat 函数 ( ) 的程序员手册中描述了“十六进制原始模式” man 2 stat,并指出它们是八进制值:

为 st_mode 字段定义了以下标志:

S_IFMT 0170000 文件类型位字段的位掩码
S_IFSOCK 0140000 套接字
S_IFLNK 0120000 符号链接
S_IFREG 0100000 常规文件
S_IFBLK 0060000 块设备
S_IFDIR 0040000 目录
S_IFCHR 0020000 字符设备
S_IFIFO 0010000 先进先出
S_ISUID 0004000 设置 UID 位
S_ISGID 0002000 设置组 ID 位(见下文)
S_ISVTX 0001000 粘性位(见下文)
S_IRWXU 00700 文件所有者权限掩码
S_IRUSR 00400 所有者有读权限
S_IWUSR 00200 所有者有写权限
S_IXUSR 00100 所有者有执行权限
S_IRWXG 00070 组权限掩码
S_IRGRP 00040 组有读权限
S_IWGRP 00020 组有写权限
S_IXGRP 00010 组有执行权限
S_IRWXO 00007 其他人的权限掩码(不在组中)
S_IROTH 00004 其他人有读权限
S_IWOTH 00002 其他人有写权限
S_IXOTH 00001 其他人有执行权限

(奇怪的是,在线手册页缺少此部分。)

这是一个位域,我们可以看到最后四位数字与访问模式匹配;前导数字(十六进制)与文件类型匹配,因此十六进制模式 81a4 对应于“目录,模式 0644”,十六进制模式 41ed 对应于“常规文件,模式 0775”。

相关内容