1

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

编辑:

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

4

2 回答 2

4

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

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

现在,您可能也想禁止其他事情;处理各种奇怪字符的文件名并不好玩。我强烈建议使用白名单方法。

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

来源:Single Unix Spec v. 3, §3.169,“组成名称的字符可以从所有字符值的集合中选择,不包括斜杠字符和空字节。”

于 2009-03-16T19:20:28.690 回答
0

根据Wikipedia,除 NUL 之外的任何字符在 XFS 文件系统文件名中都是合法的。当然,POSIX 通常不允许'/'在文件名中使用正斜杠。除此之外,任何东西都应该是好的,包括国际字符。

于 2009-03-16T19:10:48.247 回答