Що таке "дивний файл"?


38

Програма, яку я використовую, не починається з цього повідомлення користувача: [Errno 13] Permission denied: '/home/sleblanc/.config/app/.config

Коли я використовував ls, файл з'явився як такий:

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

Запуск stat у файлі дає мені таке:

% 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

Найдивніше - це згадка про "дивний файл".

Що таке дивний файл?


Що означає stat -c '%f' .configдрук? (Ви повинні отримати чотиризначне шістнадцяткове число.) Також, що stat -f .configдрукує? (Тут повідомляється інформація про файлову систему, що містить .config.)
zwol

4
У файлі є власник / група кореня, що дорівнює нулю ID. Це підтримує припущення @ peterh про те, що деякі метадані були нульовими.
CSM

Ви використовуєте eCryptfs?
kasperd

Відповіді:


39

(Припустимо GNU ...) Якщо statне вдалося сказати, що це за тип (каталог, (порожній) звичайний файл, посилання, сокет, ...), він говорить weird file. Я б здогадався, що файлова система пошкоджується, і я пропоную fsck.


У 2014 році до ядер GNU додано додаткові розпізнані типи файлів. Отже, якщо ваша версія старша за це, це може бути розумним файлом з якихось особливих обставин, але програма з великою ймовірністю зберігає її конфігурацію у звичайному файлі.


Однак деяке програмне забезпечення може використовувати сокет або посилання якогось дивного типу з назвою .config ...
rackandboneman

1
@rackandboneman statз GNU coreutils в моїй системі радісно повідомляє сокет як a socket. Посилання на символи посилаються як symbolic link. Жорсткі посилання не відрізняються від "звичайних" файлів і повідомляються як regular file(саме вони є, зрештою), за винятком того, що кількість посилань становить> 1.
CVn

"якихось непарних типів" - я мав на увазі інші десятки типів sockety або linky, що знаходяться в цьому надвербальному розділі коду С (безумовно, є вагома причина не просто індексувати масив рядків з номером типу файлу. .. Я здогадуюсь ...) :)
rackandboneman

@rackandboneman Base POSIX не забезпечує жодного способу вилучення "номера типу файлу" зі структури статистики, лише макроси S_ISxxx (). Деякі Unixes пропонують набір розширень "XSI", які містять спосіб зробити це, але coreutils намагається не залежати від XSI, чи це я робив останній раз, коли я все-таки шукав.
zwol

А-а-а гаразд. Я начебто помилково вважав, що coreutils є більш орієнтованою на GNU / linux, що це
задумано
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.