其中代码集/ etc / passwd文件存储在? 它可以是UTF-8? 什么限制被放置在用户

2019-08-05 07:03发布

现在的Unix或Linux系统,你怎么能知道哪些代码设置/etc/passwd中的文件存储的用户名? 是用户名称允许包含重音字符(从范围0x80..0xFF,比如说,ISO 8859-1或8859-15)? 在可以/etc/passwd文件包含UTF-8? 你可以告诉大家,它包含UTF-8? 有关密码的明文什么之前,他们被加密或散列?

显然,如果用户名和其它数据被限制为0x00..0x7F范围(反正不包括0×00),则存在UTF-8,8859-1或8859-15之间没有差异; 存在的所有字符都编码相同的。

另外,我使用/etc/passwd作为沿“使用者识别和认证数据库东西线的缩写(有时称为目录服务)基于Unix的机器,通常是通过PAM访问,有时在其他机器上托管共有来自当地一个,但有时还是实际的本地硬盘上的文件,通常被称为/etc/passwd ,通常由支持/etc/shadow ”。 我还假设有关组数据库(通常是等效的问题, /etc/group文件)有相同的答案。

Answer 1:

这是所有ASCII。 但是密码本身从未存储 - 只有单向散列的结果。 如果你想知道可以在密码本身是什么角色,这取决于语言环境,这将限制字符终端是能够处理。 见“人的语言环境”

从BSD手册页:

“/ etc / passwd文件的ASCII密码文件...”

至于用户名,我可以告诉你,仅Solaris支持ASCII。 我不能代表其他Unix恩说。

“不在的Solaris 2和Solaris中的每个对象都7can组成名称的任意字符。 以下对象的名称必须由ASCII字符:

* User names, group name, and passwords
* System name ...



文章来源: Which code set is /etc/passwd stored in? Can it be UTF-8? What limits are placed on user names?