Qual conjunto de códigos é / etc / passwd armazenados em? ele pode ser UTF-8? Que limites são colocados em nomes de usuário?
-
05-07-2019 - |
Pergunta
Em um sistema Unix ou Linux modernos, como você pode dizer qual o código definir os nomes arquivo armazena usuário /etc/passwd
em? São nomes de usuário permitido para conter caracteres acentuados (a partir do intervalo 0x80..0xFF em, digamos, ISO 8859-1 ou 8859-15)? o arquivo /etc/passwd
pode conter UTF-8? você pode dizer que ele contém UTF-8? E sobre o texto simples de senhas antes de serem criptografados ou hash?
Claramente, se os nomes de utilizador e outros dados é limitado à gama 0x00..0x7F (e exclui qualquer maneira 0x00), então não existe qualquer diferença entre UTF-8, 8859-1 ou 8859-15; os personagens presentes são todos codificados o mesmo.
Além disso, estou usando /etc/passwd
como uma abreviação para algo ao longo das linhas de "a identificação de usuário e autenticação de dados (às vezes chamado de um serviço de diretório) em uma máquina baseada em Unix, normalmente acessada via PAM e às vezes hospedado em outras máquinas completamente daquele local, mas às vezes ainda na verdade um arquivo no disco rígido local, convencionou chamar /etc/passwd
, muitas vezes apoiados por /etc/shadow
". Eu também estou supondo que as questões equivalentes sobre o banco de dados de grupo (muitas vezes o arquivo /etc/group
) têm a mesma resposta.
Solução
É tudo ASCII. Mas a senha em si nunca é armazenado - apenas os resultados do one-way hash. Se você está se perguntando o que os personagens podem estar na senha em si, isso depende do local, que irá restringir os caracteres seu terminal é capaz de lidar com eles. Consulte "homem locale"
"/ etc / passwd arquivo de senha ASCII ..."
Quanto aos nomes de usuário, posso dizer-lhe que o Solaris só suporta ASCII. Eu não posso falar por outros Unix-en.
"Nem todo objeto no Solaris 2 e Solaris 7can têm nomes compostos de caracteres arbitrários. os nomes dos seguintes objetos deve ser composto de caracteres ASCII:
* User names, group name, and passwords
* System name ...
"