Каковы все недопустимые символы в файловой системе XFS?

Может ли кто-нибудь предоставить (или указать мне список) все недопустимые символы в файловой системе XFS? Я пишу приложение, которое должно очистить имена файлов.

РЕДАКТИРОВАТЬ:

Итак, файловые системы POSIX должны разрешать все символы, кроме символа NUL, косой черты и символа '.' и ".." имена файлов зарезервированы. Все остальные исключения относятся к уровню приложения. Спасибо!

2 ответа

Решение

Файловые системы POSIX (включая XFS) допускают каждый символ в именах файлов, за исключением NUL (0x00) и косой черты (/; 0x2f).

  • NUL отмечает конец C-строки; поэтому это не разрешено в именах файлов.
  • / является разделителем каталогов, поэтому он не разрешен.
  • Имена файлов начинаются с точки (.; 0x2e) считаются скрытыми файлами. Это пользовательское пространство, а не соглашение о ядре или файловой системе.
  • Могут быть соглашения, которым вы следуете - например, имена файлов UTF-8 - в этом случае существует множество ограничений, в том числе какую форму нормализации использовать.

Теперь вы, вероятно, хотите запретить и другие вещи; Имя файла со всевозможными странными символами не доставляет удовольствия. Я настоятельно рекомендую подход белого списка.

Кроме того, при обработке имен файлов, остерегайтесь .. запись в каждом каталоге. Вы не хотите проходить его и разрешать произвольный путь.

Источник: Single Unix Spec v. 3, § 3.169, "символы, составляющие имя, могут быть выбраны из набора всех значений символов, кроме символа косой черты и нулевого байта".

Согласно Википедии, любой символ, кроме NUL, является допустимым в имени файла файловой системы XFS. Конечно, POSIX обычно не допускает косую черту '/' в имени файла. Помимо этого, все должно быть хорошо, в том числе международных символов.

Другие вопросы по тегам