什么是“怪异文件”?


38

我正在使用的应用程序不会以以下用户消息开头: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

当我使用时ls,文件显示如下:

?--------- 1 root root     0 Dec 31  1969 .config

在文件上运行stat可以给我以下信息:

% stat .config
  File: .config
  Size: 0           Blocks: 0          IO Block: 4096   weird file
Device: 2dh/45d Inode: 9799944     Links: 1
Access: (0666/?rw-rw-rw-)  Uid: ( 1000/     sleblanc)   Gid: ( 1000/         sleblanc)
Access: 1969-12-31 19:00:00.000000000 -0500
Modify: 1969-12-31 19:00:00.000000000 -0500
Change: 2018-04-07 23:40:22.549653691 -0400

最令人惊讶的是对“怪异文件”的提及。

什么是怪异文件?


什么stat -c '%f' .config打印?(您应该获得一个四位数的十六进制数字。)此外,stat -f .config打印什么?(这报告有关包含的文件系统的信息.config。)
zwol18,2018年

4
该文件具有所有者/根组,ID为零。这支持@peterh的假设,即某些元数据已被清零。
CSM

您在使用eCryptfs吗?
kasperd

Answers:


39

(假设为GNU ...)如果stat无法分辨出它是什么类型(目录,(空)常规文件,链接,套接字等),它说weird file。我猜想文件系统损坏并提出建议fsck


在2014年,其他可识别的文件类型被添加到GNU coreutils。因此,如果您的版本早于该版本,则在某些特殊情况下它可能是一个合理的文件,但是应用程序很有可能将其配置存储在常规文件中。


但是,某些软件可能会使用名为.config ...的某些奇怪类型的套接字或链接
rackandboneman18年

1
stat我系统上的GNU coreutils的@rackandboneman 愉快地将套接字报告为socket。符号链接报告为symbolic link。硬链接与“常规”文件没有区别,并且报告为regular file(毕竟是硬链接),除非链接计数> 1。
CVn

“某种奇怪的类型”-我指的是在C代码的超详细部分中发现的其他数十种套接字或链接类型(当然,有充分的理由不只是使用文件类型number索引字符串数组。 ..我猜...):)
rackandboneman 18-4-9

@rackandboneman Base POSIX没有提供任何方法来从统计信息结构中提取“文件类型编号”,仅提供了S_ISxxx()宏。某些Unix提供了一组“ XSI”扩展,其中包括一种做到这一点的方法,但是coreutils尝试不依赖XSI,或者无论如何我还是上次看过。
zwol

啊,好的。我有点误以为coreutils更应该以GNU / linux为中心:)
rackandboneman 18-4-12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.