O que é um "arquivo estranho"?

38

Um aplicativo que estou usando não será iniciado com esta mensagem de usuário: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

Quando eu usei ls, o arquivo apareceu da seguinte forma:

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

A execução do stat no arquivo me dá o seguinte:

% 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

O mais surpreendente é essa menção a um "arquivo estranho".

O que é um arquivo estranho?

sleblanc
fonte
O que stat -c '%f' .configimprime? (Você deve obter um número hexadecimal de quatro dígitos.) Além disso, o que é stat -f .configimpresso? (Este relatórios informações sobre o sistema de arquivos que contém .config.)
Zwol
4
O arquivo possui o proprietário / grupo de raiz, que é o ID zero. Isso suporta a suposição de @ peterh de que alguns dos metadados foram zerados.
CSM
Você está usando eCryptfs?
kasperd

Respostas:

39

(Supondo que o GNU ...) Se statnão era possível dizer que tipo (diretório, arquivo (vazio) regular, link, soquete, ...), diz weird file. Eu acho que a corrupção do sistema de arquivos e sugerir fsck.


Em 2014 , tipos de arquivos reconhecidos adicionais foram adicionados aos coreutils do GNU. Portanto, se sua versão for anterior a isso, pode ser um arquivo razoável para alguma circunstância especial, mas é muito provável que um aplicativo armazene sua configuração em um arquivo regular.

muru
fonte
No entanto, alguns softwares pode usar uma tomada ou link de algum tipo estranho chamado config ...
rackandboneman
1
@rackandboneman statdo GNU coreutils no meu sistema relata felizmente um soquete como a socket. Os links simbólicos são relatados como symbolic link. Os hardlinks são indistinguíveis dos arquivos "regulares" e são relatados como regular file(afinal, são eles), exceto que a contagem de links é> 1.
um CVn
"de algum tipo estranho" - eu estava me referindo às outras dezenas de tipos de sockety ou linky encontrados nessa seção super verbosa do código C (certamente há uma boa razão para não apenas indexar uma matriz de strings com o número do tipo de arquivo. .. eu acho ...) :)
rackandboneman
@rackandboneman O POSIX não fornece nenhuma maneira de extrair um "número de tipo de arquivo" de uma estrutura stat, apenas as macros S_ISxxx (). Alguns Unixes oferecem um conjunto de extensões "XSI" que incluem uma maneira de fazer isso, mas o coreutils tenta não depender do XSI, ou fez a última vez que procurei de qualquer maneira.
Zwol 12/04/19
Ahhh OK. Eu era uma espécie de mis-levando em consideração coreutils a ser mais GNU / Linux centric que se destina a ser :)
rackandboneman