Che cos'è un "file strano"?


38

Un'applicazione che sto usando non inizierà con questo messaggio utente: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

Quando l'ho usato ls, il file si presentava come tale:

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

L'esecuzione di stat sul file mi dà questo:

% 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

Più sorprendente è questa menzione di un "file strano".

Che cos'è un file strano?


Cosa stat -c '%f' .configstampa? (Dovresti ottenere un numero esadecimale di quattro cifre.) Inoltre, cosa stat -f .configstampa? (Questo riporta informazioni sul filesystem contenente .config.)
zwol

4
Il file ha il proprietario / gruppo di root, che è ID zero. Ciò supporta la supposizione di @ peterh che alcuni dei metadati siano stati azzerati.
CSM

Stai usando eCryptfs?
Kasperd,

Risposte:


39

(Supponendo GNU ...) Se statnon sapessi dire di che tipo è (directory, file (vuoto) regolare, link, socket, ...), dice weird file. Immagino la corruzione del filesystem e suggerirei fsck.


Nel 2014 , sono stati aggiunti altri tipi di file riconosciuti ai coreutils GNU. Quindi, se la tua versione è precedente, potrebbe essere un file ragionevole per qualche circostanza speciale, ma è molto probabile che un'app memorizzi la sua configurazione in un file normale.


Tuttavia, alcuni software potrebbero utilizzare un socket o un collegamento di un tipo strano chiamato .config ...
rackandboneman

1
@rackandboneman statdi GNU coreutils sul mio sistema riporta felicemente un socket come socket. I collegamenti simbolici sono riportati come symbolic link. I collegamenti fissi non sono distinguibili dai file "normali" e vengono riportati come regular file(dopo tutto è quello che sono), tranne per il fatto che il conteggio dei collegamenti è> 1.
un CVn

"di qualche tipo strano" - Mi riferivo ad altre dozzine di tipi sockety o linky trovati in quella sezione super-dettagliata del codice C (c'è sicuramente una buona ragione per non indicizzare un array di stringhe con il numero del tipo di file. .. suppongo ...) :)
rackandboneman

@rackandboneman POSIX Base non fornisce alcun modo per estrarre un "numero di tipo di file" da una struttura stat, solo le macro S_ISxxx (). Alcuni Unix offrono una serie di estensioni "XSI" che includono un modo per farlo, ma coreutils cerca di non dipendere da XSI, o lo ha fatto l'ultima volta che ho guardato comunque.
zwol,

Ah va bene. Ero un po 'come presunto che i coreutil fossero più incentrati su GNU / linux che dovrebbe essere :)
rackandboneman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.