Qual conjunto de códigos é / etc / passwd armazenados em? ele pode ser UTF-8? Que limites são colocados em nomes de usuário?

StackOverflow https://stackoverflow.com/questions/1412193

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.

Foi útil?

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"

A partir da página homem BSD:

"/ 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 ...

"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top