我需要用引号引起来用户名和组吗?

我需要用引号引起来用户名和组吗?

根据systemd的强制要求用户/组名称语法,一组由与 POSIX 完全相同的规则定义,即«小写和大写 ASCII 字母、数字、句点、下划线和连字符»以随机顺序排列,对于基于 Debian 的操作系统也是如此。

...该值应由可移植字符集中的字符组成(NUL 除外,如下所示)。

因此,用户名有效字符串的定义向前兼容POSIX环境变量在像or ?这样的命令中,变量周围的引号$USER可以省略。chowninstall

答案1

您链接到的 systemd 页面,说:

每当 systemd 组件接受并使用由系统的其他(非 systemd)组件注册的用户/组名称时,就会强制执行宽松的用户/组名称语法 [...]

那里的规则似乎允许例如用户名中间有空格。在该页面的前面,它提到至少sssd会生成这样的名称。

因此,即使从技术上讲,当您当然该值不包含IFS字符或全局字符,考虑一下您的确定性可能是个好主意,并且使用引号是否比验证值的所有可能来源以及代码的所有可能部分更容易可能会改变IFS

相关内容