XFS 文件系统中存在哪些非法字符?

gun*_*uns 2 filesystems illegal-characters

有人可以提供(或向我指出一个列表)XFS 文件系统中的所有非法字符吗?我正在编写一个需要清理文件名的应用程序。

编辑:

好的,POSIX 文件系统应该允许除 NUL 字符、正斜杠和“.”之外的所有字符。和“..”文件名被保留。所有其他异常都是应用程序级别的。谢谢!

der*_*ert 6

POSIX 文件系统(包括 XFS)允许文件名中的每个字符,但 NUL (0x00) 和正斜杠 (/; 0x2f) 除外。

\n\n
    \n
  • NUL 标记 C 字符串的结束;所以文件名中不允许使用它。
  • \n
  • / 是目录分隔符,所以不允许。
  • \n
  • 以点 ( .; 0x2e) 开头的文件名被视为隐藏文件。这是用户空间,而不是内核或文件系统约定。
  • \n
  • 您可能遵循 \xe2\x80\x94 的约定,例如 UTF-8 文件名 \xe2\x80\x94 在这种情况下,还有很多很多的限制,包括使用哪种标准化形式。
  • \n
\n\n

现在,您可能还想禁止其他事情;带有各种奇怪字符的文件名处理起来毫无乐趣。我强烈建议使用白名单方法。

\n\n

另外,在处理文件名时,请注意..每个目录中的条目。您不想遍历它并允许任意路径。

\n\n

来源:Single Unix Spec v. 3,\xc2\xa73.169,“组成名称的字符可以从除斜杠字符和空字节之外的所有字符值集中选择。”

\n