Заблуждения о файлах

Если удалить файл, свободное место увеличится на размер файла.

Ну, во-первых, файл очень часто занимает отличное от своего размера место

Если удалить файл, свободное место увеличится.

В большинстве файловых систем Linux место не освободится пока файл не закроют все процессы, работающие с ним.

Если удалить файл, свободное место увеличится, когда файл все закроют.

Вот в hfsplus в Linux 2.6.32-2.6.36 не так. В 2.6.37 это таки пофиксили.

Ну оно хотя бы не уменьшится при удалении?!

Много чудных файловых систем можно встретить. Вот например nilfs

Если дописать информацию в файл, занятое им место на диске увеличится.

Файловые системы со сжатием могут сжать новый файл лучше.

Одному имени файла всегда соответствует один и тот же файл.

Файлы кто-то может переименовать (c)ваш К.О. Даже в самый неожиданный момент (c)всё тот же К.О.

Одному имени файла соответствует один и тот же файл.

— Пайпы(созданные mkfifo), хотя это уже не просто файлы
— Ну и всё тот же прикол с удалением.
-открыть
-удалить
-создать
-открыть
-файлы существуют одновременно, открыты по одному имени, но они разные.

Имя файла уникально.

— фс может быть битая
— различные сетевые фс полны неожиданностей

Одному файлу соответствует одно имя файла.

— hard links

При копировании одного файла, копируется один файл.

— netatalk/afp/OS X — файлы хранятся парами <file> и ._<file> с метаинформацией

При создании одного файла, создаётся один файл.

— всё тот же netatalk

Если вы смогли создать файл с произвольным именем, вы можете его переименовать.

Sticky bit + netatalk + ._<file> созданный другим пользователем

Имена файлов не содержат специальных символов.

— OS X вот даже извернулись и запилили поддержку ‘/’ в именах файлов при том, что для разделения директорий в пути используется тот же ‘/’.
— и не забываем про ‘\n’. 2013 год на дворе, а ‘ ‘ в путях то не все поддерживают, не то что ‘\n’

Не бывает эксплоитов использующих имя файла.

— надо правильно экранировать пути

Имя файла может вместиться в какое-то ограниченное поле.

— ну может и может, но стоит учитывать, что кто-нибудь откуда-нибудь «притащит» файл с именем, которое вы никак не ожидали

Если в файловой системе запрещёно использовать какой-то символ в именах файлов, то никто не сможет создать такой файл.

— опять же ‘\’ в OS X
— в любом случае кто-то мог обойти системные проверки и записать это на диск — при чтении проверки почти никто не выполняет

У файла есть имя.

— удалённый открытый файл
— в hfsplus файлы хранятся в директории ‘\0\0\0\0HFS Private Data’ что делает доступ к ним в мире ASCIIZ проблематичным.

Пути не зациклены

— симлинки a->b, b->a, Nautilus R.I.P.

Пути не зациклены, если не считать симлинки директориями

— FAT всегда можно подредактировать :-)

Пути не зациклены в валидных фс

— hfsplus(да, опять она) позволяет это делать «из коробки» из-за хардлинков для директорий

Данные файлов хранятся на запоминающих устройствах

— pingfs

Файлы есть :-)

— даже не знаю. Ну… Например:

Yuriy Nazarov on GithubYuriy Nazarov on Twitter
Yuriy Nazarov
Software engineer
Люблю machine learning