7 位八进制格式的文件模式

7 位八进制格式的文件模式

rpm --dump将以 7 位八进制格式打印文件模式:

$ rpm -q --dump rpm | grep -E '/usr/bin/rpmdb|/var/lib/rpm ' | cut -d' ' -f1,5
/usr/bin/rpmdb 0100755
/var/lib/rpm 040755
$

所有这些数字是什么意思?我想其中一些与文件类型有关,但是鉴于我有现有文件和标准命令行工具(+ perl/python 等,如果需要),我可以重现相同的字符串吗?

我查看了 rpm(1),它没有透露任何内容(只调用字段“模式”),以及 stat(1),它只提到通常的 4 位模式。我最接近的是另一个关于 AIX 上的 6 位数字格式的问题

编辑:我刚刚注意到有时是 6 位数字;不过,问题基本保持不变。

答案1

这是结构st_mode的字段stat:它对文件类型和模式位进行编码。在 Linux 系统上执行man 2 stat(或者可能man 7 inode)并搜索标题为“文件类型和模式”的部分。例如,0100755 表示“模式为 755 的常规文件”,040755 表示“模式为 755 的目录”。

顺便说一句,前导 0 表示“八进制”,因为这些值是在头文件中指定的。位数无关紧要:它只是包含完整值所需的位数。

相关内容