Co to jest „dziwny plik”?

38

Aplikacja, której używam, nie uruchomi się z tym komunikatem użytkownika: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

Kiedy użyłem ls, plik pojawił się jako taki:

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

Uruchomienie statystyki na pliku daje mi to:

% 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

Najbardziej zaskakujące jest wspomnienie o „dziwnym pliku”.

Co to jest dziwny plik?

sleblanc
źródło
Co stat -c '%f' .configdrukuje? (Powinieneś dostać czterocyfrową liczbę szesnastkową.) Co również stat -f .configdrukuje? (Podaje informacje o systemie plików zawierającym .config.)
zwol
4
Plik ma właściciela / grupę root, która ma identyfikator zero. Potwierdza to przypuszczenie @ peterh, że niektóre metadane zostały wyzerowane.
CSM,
Czy używasz eCryptfs?
kasperd

Odpowiedzi:

39

(Zakładając, że GNU ...) Jeśli statnie mogę powiedzieć, jaki to typ (katalog, (pusty) zwykły plik, link, gniazdo, ...), mówi weird file. Domyślam się uszkodzenia systemu plików i sugeruję fsck.


W 2014 r. Dodatkowe podstawowe typy plików zostały dodane do GNU coreutils. Tak więc, jeśli twoja wersja jest starsza, może to być rozsądny plik w pewnych szczególnych okolicznościach, ale istnieje duże prawdopodobieństwo, że aplikacja przechowa swoją konfigurację w zwykłym pliku.

muru
źródło
Jednak niektóre programy mogą wykorzystywać gniazdo lub łącze jakiegoś nieparzystego typu o nazwie .config ...
rackandboneman,
1
@rackandboneman statz GNU coreutils w moim systemie szczęśliwie zgłasza gniazdo jako socket. Dowiązania symboliczne są zgłaszane jako symbolic link. Odsyłacze twarde są nie do odróżnienia od „zwykłych” plików i są zgłaszane jako regular file(przecież takie są), z tym wyjątkiem, że liczba odsyłaczy wynosi> 1.
CVn
„jakiegoś nieparzystego typu” - miałem na myśli inne dziesiątki socketycznych lub łączących typów znalezionych w tej bardzo szczegółowej sekcji kodu C (z pewnością jest dobry powód, aby nie indeksować tablicy ciągów o numerze typu pliku. .. Chyba ...) :)
rackandboneman
@rackandboneman Base POSIX nie zapewnia żadnego sposobu na wyodrębnienie „numeru typu pliku” ze struktury statystyki, tylko makra S_ISxxx (). Niektóre Uniksy oferują zestaw rozszerzeń „XSI”, które zawierają sposób, aby to zrobić, ale coreutils stara się nie polegać na XSI, lub zrobiłem to po raz ostatni.
zwolnić
Ach, w porządku. Byłam trochę błędnie zakładając Coreutils być bardziej GNU / Linux centric, że ma być :)
rackandboneman