Qu'est-ce qu'un "fichier étrange"?

38

Une application que j'utilise ne commencera pas par ce message utilisateur: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

Quand j'ai utilisé ls, le fichier est apparu comme tel:

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

Exécuter stat sur le fichier me donne ceci:

% 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

Le plus surprenant est cette mention d'un "fichier étrange".

Qu'est-ce qu'un fichier étrange?

sleblanc
la source
Qu'est-ce que l' stat -c '%f' .configimpression? (Vous devriez obtenir un nombre hexadécimal à quatre chiffres.) Aussi, qu'est-ce qui est stat -f .configimprimé? (Cela rapporte des informations sur le système de fichiers contenant .config.)
zwol
4
Le fichier a propriétaire / groupe de racine, qui est l'identifiant zéro. Ceci confirme la supposition de @ peterh qu'une partie des métadonnées a été mise à zéro.
CSM
Utilisez-vous eCryptfs?
kasperd

Réponses:

39

(En supposant que GNU ...) Si statje ne pouvais pas dire de quel type il s'agit (répertoire, fichier normal (vide), lien, socket, ...), dit-il weird file. Je suppose que la corruption du système de fichiers et suggère fsck.


En 2014 , d'autres types de fichiers reconnus ont été ajoutés à GNU coreutils. Donc, si votre version est plus ancienne que cela, il se peut que ce soit un fichier raisonnable dans certaines circonstances spéciales, mais une application risque fort de stocker sa configuration dans un fichier normal.

muru
la source
Cependant, certains logiciels peuvent utiliser un socket ou un lien de type étrange nommé .config ...
rackandboneman
1
@rackandboneman statde GNU coreutils sur mon système rapporte avec bonheur un socket en tant que socket. Les liens symboliques sont signalés comme symbolic link. Les liens durs sont impossibles à distinguer des fichiers "normaux" et sont signalés comme tels regular file(c'est ce qu'ils sont après tout), sauf que le nombre de liens est> 1.
un CVn
"d'un type étrange" - je faisais référence aux autres dizaines de types sockety ou linky trouvés dans cette section très verbeuse de code C (il existe certainement une bonne raison de ne pas indexer un tableau de chaînes avec le numéro de type de fichier. .. Je suppose ...) :)
rackandboneman
@rackandboneman Base POSIX ne fournit aucun moyen d'extraire un "numéro de type de fichier" d'une structure de statistiques, uniquement les macros S_ISxxx (). Certains Unix offrent un ensemble d'extensions "XSI" qui incluent un moyen de le faire, mais coreutils essaie de ne pas dépendre de XSI, ou l'a fait la dernière fois que j'ai regardé.
dimanche
Ah, d'accord. J'avais un peu tort de supposer que coreutils était plus centré sur GNU / linux qu'il est censé l'être :)
rackandboneman