Линус Торвальдс раскритиковал регистронезависимые файловые системы

В ответ на публикацию исправления проблемы, связанной с поддержкой работы ФС Bcachefs в режиме без учёта регистра символов в именах каталогов, Линус Торвальдс заявил, что разработчики ФС видимо не способны учиться на своих ошибках, поскольку это далеко не первая проблема в коде обработки регистронезависимости.

Суть проблемы в том, что Unicode достаточно сложный стандарт и приведение символов к единому регистру (case folding) для всех его краевых случаев корректно не реализует практически никто. Более того – в силу специфики структуры Unicode, возможны ситуации, когда ожидания программ не совпадают с тем, как это фактически реализовано в той или иной файловой системе (например, кто-то считает символы “❤” и “❤️” одинаковыми в режиме без учёта регистра, а кто-то нет). Это приводит к ошибочному поведению – в том числе к потенциальным уязвимостям, потому что проверки в программах могут считать имена файлов разными, но ФС посчитает их совпадающими, или наоборот, что приведёт к проблемам с безопасностью.

По мнению Торвальдса, проблема некорректности приведения регистра символов в Unicode сводится к тому, что однозначного, правильного и безошибочного пути выполнять данную операцию просто не существует, и в результате попытки придать какое-то специальное значение байтам или их комбинациям ведут только к целым новым классам ошибок, включая и уязвимости. Торвальдс сообщил, что времена FAT давно закончились, но почему-то некоторые люди продолжают быть уверены, что поведение из эпохи FAT – полезная возможность, в то время как это ошибка.

Release. Ссылка here.