Qual é qual
Nome de usuário é um termo ambíguo que pode se referir
- para uma cadeia formal de ID do usuário conhecida em algum sistema ou
- para um nome de exibição como
John Smith
.
Por esse motivo, temos termos mais específicos, como login name , que nos informa que essa é a string de caracteres usada para fazer login, como jsmith
e não John Smith
.
ID do usuário também serve para essa finalidade, mas é ambíguo contra um ID de usuário numérico . Isso tem que ser claro a partir do contexto. Por exemplo, no Unix, os usuários geralmente não lidam com IDs de usuário numéricos; Se um prompt solicitar um "ID de usuário", as pessoas saberão que não devem inserir 1003
, mas jsmith
.
Nome de exibição (também chamado de nome de usuário real ) informa que esse é o nome de algum objeto de software (como uma conta de usuário) usado para fazer referência a ele nas interfaces do usuário e na saída do programa, como mensagens de diagnóstico ou depuração. A implicação é que um nome de exibição não é necessariamente exclusivo entre esses objetos e não pode ser usado como uma chave para se referir a um objeto sem ambigüidade. É literalmente apenas para fins de exibição. Um "nome de exibição" não é necessariamente um nome de usuário; isso tem que ser estabelecido pelo contexto. Qualquer coisa que possa ter um nome pode ter um nome de exibição.
No Unix tradicional, o arquivo /etc/passwd
associa seu ID de usuário numérico ao nome de login (o ID de usuário textual) e com um nome de exibição .
Mudança e consequências
O utilitário chfn
é usado para alterar o nome de exibição também conhecido como nome de usuário real e informações relacionadas. Fazer isso não deve ter consequências.
Alterar o ID do usuário textual conhecido como login name requer privilégios; root
pode editar o arquivo de senha para editá-lo. O efeito será instantâneo: o novo nome aparecerá em qualquer parte do sistema, onde IDs de usuário numérico serão exibidos como seu equivalente de texto. Por exemplo, se alguém listar um diretório usando ls -l
e esse diretório contiver arquivos de propriedade daquele usuário, ele verá imediatamente o novo nome, pois o programa ls
o selecionará do banco de dados de senhas.
A mudança vai quebrar ou potencialmente quebrar várias coisas no sistema, e é uma má ideia:
- Primeiramente, se o novo nome se choca com outro, isso é obviamente muito ruim; Estou mencionando isso por uma questão de completude. Vamos supor que não é o caso.
- Vamos supor também que não é o caso de o nome de algum usuário ser alterado sem seu conhecimento, deixando-o incapaz de efetuar login.
- O problema restante é que, no sistema de arquivos, provavelmente existem arquivos de configuração que codificam o ID do usuário textual : ambos em seus nomes de caminho e em seu conteúdo. Obviamente, eles continuam a se referir ao antigo ID do usuário que não existe mais no arquivo de senha. A mudança de nome não está completa, a menos que todas sejam caçadas e reparadas.
- O problema pode ser agravado ainda mais se for criada uma nova entrada no arquivo de senha que corresponda ao nome antigo. Essas configurações agora se referem a um usuário válido, mas errado.
Como exemplo
- considere que o utilitário
sudo
existe no sistema e é configurado por meio do arquivo/etc/sudoers
. Suponha que o arquivo/etc/sudoers
conceda ao usuáriobob
o privilégio de executar algum comando administrativo perigoso com credenciais de superusuário. - Suponha agora que renomeamos
bob
pararobert
no arquivo de senha e não atualizamos esta entrada. Agorarobert
não pode mais executar esse comando; o arquivosudoers
concede o privilégio parabob
não pararobert
. - No dia seguinte, um novo usuário é adicionado e, por acaso, é chamado de
bob
. Estebob
agora tem o privilégio de executar esse comando administrativo como root.