¿Qué es un "archivo extraño"?

38

Una aplicación que estoy usando no comenzará con este mensaje de usuario: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

Cuando lo usé ls, el archivo apareció como tal:

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

Ejecutar stat en el archivo me da esto:

% 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

Lo más sorprendente es esta mención de un "archivo extraño".

¿Qué es un archivo extraño?

sleblanc
fuente
¿Qué stat -c '%f' .configimprime? (Debería obtener un número hexadecimal de cuatro dígitos). Además, ¿qué stat -f .configimprime? (Esto informa sobre el sistema de archivos que contiene .config).
zwol
44
El archivo tiene propietario / grupo de raíz, que es ID cero. Esto respalda la suposición de @peterh de que algunos de los metadatos se han puesto a cero.
CSM
¿Estás usando eCryptfs?
kasperd

Respuestas:

39

(Suponiendo GNU ...) Si statno puede decir de qué tipo es (directorio, archivo regular (vacío), enlace, socket, ...), dice weird file. Supongo que la corrupción del sistema de archivos y sugeriría fsck.


En 2014 , se agregaron tipos de archivos reconocidos adicionales a los coreutils de GNU. Entonces, si su versión es anterior a esa, puede ser un archivo razonable para alguna circunstancia especial, pero es muy probable que una aplicación almacene su configuración en un archivo normal.

muru
fuente
Sin embargo, algunos programas pueden usar un socket o un enlace de algún tipo extraño llamado .config ...
rackandboneman
1
@rackandboneman statde GNU coreutils en mi sistema felizmente informa un socket como a socket. Los enlaces simbólicos se informan como symbolic link. Los enlaces duros no se pueden distinguir de los archivos "normales" y se informan como regular file(después de todo, eso es lo que son), excepto que el recuento de enlaces es> 1.
un CVn
"de algún tipo extraño": me refería a las otras docenas de tipos de socket o linky que se encuentran en esa sección súper verbosa del código C (ciertamente hay una buena razón para no solo indexar una matriz de cadenas con el número de tipo de archivo. .. Supongo ...) :)
rackandboneman
@rackandboneman Base POSIX no proporciona ninguna forma de extraer un "número de tipo de archivo" de una estructura estadística, solo las macros S_ISxxx (). Algunos Unix ofrecen un conjunto de extensiones "XSI" que incluyen una forma de hacerlo, pero coreutils intenta no depender de XSI, o lo hizo la última vez que lo busqué de todos modos.
zwol
Ahhh ok.
Supuse que Coreutils