Линус Торвальдс, создатель ядра Linux и одна из самых влиятельных фигур в мире свободного программного обеспечения, недавно снова дал повод для обсуждения своей прямолинейной позиции относительно файловых систем с поддержкой нечувствительности к регистру. В своём сообщении на Linux Kernel Mailing List он ярко выразил своё недовольство существующими попытками внедрения такой функциональности, которую он считает фундаментальной ошибкой и источником серьёзных проблем безопасности и надёжности. Это заявление стало очередным поводом для широкой дискуссии среди разработчиков и энтузиастов Linux, а также поставило под вопрос необходимость развития и поддержки подобной функциональности в будущем. Суть проблемы, по мнению Торвальдса, заключается в том, что файлы и папки с нечувствительностью к регистру создают неразрешимые для корректной реализации технические и логические трудности. Идея нечувствительности к регистру заключается в том, что файлы с именами, которые отличаются лишь регистром букв — например, "File.
txt" и "file.txt" — воспринимаются как одни и те же. Подобная возможность изначально присутствовала в широко используемых файловых системах, таких как FAT, ставшей стандартом для Windows и других систем. Однако в Linux и UNIX-подобных системах по умолчанию используется чувствительность к регистру, что позволяет, например, иметь в одной директории оба файла с такими схожими, но различными именами. Торвальдс подчёркивает, что попытки ввести поддержку нечувствительности к регистру в современных файловых системах на уровне ядра зачастую приводят к гораздо более серьёзным последствиям, чем просто неудобства.
Среди таких последствий он выделяет проблемы с безопасностью, поскольку программное обеспечение в пользовательском пространстве часто проверяет имена файлов, пытаясь исключить их совпадение с определёнными чувствительными шаблонами. Если при этом файловая система сама делает дополнительные преобразования в имена, игнорируя не только регистр, но и «невидимые» или игнорируемые unicode-кодовые точки, возникает риск того, что проверка безопасности программ пользователя оказывается полностью обходится. Примером таких кодовых точек Торвальдс называет символы сердца: ❤ и ❤️ — они отличаются лишь «игнорируемыми» кодовыми символами Unicode. Если файловая система считает их идентичными, тогда программы, которые запрещают выполнять операции с определёнными именами или шаблонами, могут быть обмануты. По мнению разработчика, это порождает значительные уязвимости, поскольку многие программы защищаются именно путём контроля имён файлов для предотвращения атак или несанкционированного доступа.
Кроме того, Торвальдс критикует сам подход реализации нечувствительности к регистру как технически невозможный «правильный» путь. Он утверждает, что попытки «сделать это правильно» превращаются в «ужасно неправильные» реализации, так как отсутствует единственный правильный способ выполнения таких сравнений, особенно учитывая сложность и многообразие кодировок Unicode и разнообразие специальных символов. В связи с этим поддержка нечувствительности в разных файловых системах зачастую реализуется по-разному, что приводит к несовместимости и ошибкам. История ошибок и конфликтов, связанных с нечувствительностью к регистру, существует не вчера. Торвальдс в своём сообщении обращается к недавнему случаю с Bcachefs — экспериментальной файловой системой, которая столкнулась с ошибками в реализации поддержки нечувствительности к регистру, и сейчас исправляет их для включения в Linux 6.
15. Кроме того, упомянуты и другие системные конфликты, связанные с поддержкой Unicode и нечувствительного сравнения, что дополнительно подкрепляет позицию о том, что попытки вкоренить такую функциональность создают лишь новые сложности. Особенно важно понимать, что для Linux и его экосистемы — где разнообразие пользователей, настроек и приложений чрезвычайно велико — наличие базовой чувствительности к регистру является ключевым фактором, определяющим гибкость и безопасность системы. В отличие от некоторых других операционных систем, где нечувствительность к регистру считается необходимостью из-за исторических причин или особенностей файловой системы, Linux имеет возможность развиваться, основываясь на более строгих принципах, что способствует меньшему числу ошибок и повышенной предсказуемости поведения. Тем не менее, критика Торвальдса не означает, что в Linux полностью откажутся от файловых систем, которые обеспечивают нечувствительность к регистру.
Проблема скорее в том, что внедрение и поддержка этой функции должны осуществляться крайне осторожно и на максимально обоснованной технической базе. Многие разработчики соглашаются с тем, что для некоторых задач и пользователей такая функциональность может быть полезной, однако она не должна приводить к компромиссам в стабильности и безопасности ядра и всей системы. Подчёркивая своё разочарование, Линус отмечает, что «разработчики файловых систем никогда не учатся на ошибках», что можно воспринять как призыв к более ответственному отношению к внедрению новых функций и к неукоснительному тестированию. Он обращает внимание на то, что текущие тесты зачастую не охватывают «интересные случаи», которые непосредственно связаны с безопасностью, и поэтому большинство багов и уязвимостей остаются незамеченными на ранних этапах. Критика со стороны Линуса Торвальдса стала значимым сигналом для всей Linux-сообщества.
Она напоминает о том, что скорость инноваций и расширения функциональности не должна идти в ущерб основным качествам операционной системы: предсказуемости, надёжности и безопасности. Проблема нечувствительности к регистру особенно актуальна сегодня, когда системы взаимодействуют с разнообразными глобальными символами Unicode и становятся мишенью для всё более изощрённых атак. В связи с этим в ближайших версиях Linux можно ожидать улучшений в архитектуре поддержки файловых систем, а также активного обсуждения оптимальных подходов к реализации дополнительных функций, включая нечувствительность к регистру. В частности, Bcachefs, которая столкнулась с недавними проблемами, продолжит получать исправления, направленные на повышение стабильности и безопасности этого функционала. Итогом этой дискуссии становится понимание того, что файлы и директории являются носителями значимой информации не только с точки зрения пользователя, но и ядра системы.
От точности обработки имён файлов зависит безопасность всей операционной системы. Поэтому решение вопроса о том, стоит ли и как поддерживать нечувствительность к регистру в Linux, должно приниматься с учётом всех технических тонкостей и возможных рисков. Подводя итог, можно отметить, что позиция Линуса Торвальдса чётко ориентирована на сохранение основополагающих принципов Linux и предупреждение о потенциальных опасностях слепого копирования решений, появившихся в иностранных файловых системах много лет назад. Для сообщества это призыв к ответственному отношению и глубокому анализу каждой новой функции в ядре, чтобы избегать повторения прежних ошибок и укреплять фундамент операционной системы, делая её надёжнее и безопаснее.