O nome de usuário no Unix diferencia maiúsculas de minúsculas?


20

É ssh abc@servernamediferente de ssh Abc@servername? O caso do nome de usuário é importante no Unix?

Meu usuário se autentica via LDAP.


3
Quase tudo no Linux faz distinção entre maiúsculas e minúsculas. Significado:cd não é o mesmo que CDcaminho ... Só para realmente fazê-los dizer o mesmo é aliases definida em seu .bashrcarquivo ..
ryekayo

11
Suponho que isso depende de qual atributo LDAP você usa para o nome de usuário. Se for UID do RFC 4519 , não diferencia maiúsculas de minúsculas, mas as implementações de autenticação ainda podem impor significado de maiúsculas e minúsculas. Também depende de como exatamente a autenticação é feita com LDAP.
Stéphane Chazelas

11
Simplesmente tentar fazer login com seu nome de usuário em maiúscula teria respondido isso em apenas alguns segundos.
Lightness Races com Monica

Respostas:


14

Assim como nomes de host e nomes de domínio, o nome de usuário não é estritamente uma coisa do Unix, mas pode e geralmente abrange uma variedade maior de tipos de SO.

Se eles serão considerados com distinção entre maiúsculas e minúsculas depende então do padrão usado para especificá-los.

Nomes de host e nomes de domínio não fazem distinção entre maiúsculas e minúsculas pelo padrão DNS (consulte RFC4343 ).

Os nomes de usuários armazenados em um back-end local (/ etc / passwd) ou em um estilo Unix (NIS) não diferenciam maiúsculas de minúsculas pelo padrão POSIX .

Os nomes de usuários armazenados em um back-end LDAP ou Active Directory seguirão a definição de esquema de atributo usada uidecn nomes de usuários que geralmente armazenam o nome de usuário têm atributos de esquema diferentes, sem distinção entre maiúsculas e minúsculas para o primeiro, mas diferenciando maiúsculas de minúsculas para o último. Isso significa que tanto Abce abcpode corresponder ou não abcde entrada, dependendo da configuração do servidor LDAP.

Devido a essa inconsistência, eu recomendaria usar apenas letras minúsculas para nomes de usuário e nomes de host / domínio e, em seguida, evitar o ssh ABC@SERVERNAME.DOMAIN.COMque é rude de qualquer maneira.


11
Portanto, da maneira como leio o padrão POSIX , já que não é especificado como sensível a maiúsculas ou minúsculas e todo o conjunto de caracteres de nome de arquivo portátil está disponível (que inclui maiúsculas e minúsculas), isso depende da implementação. Isso está correto? Dito isto, existe uma convenção padrão?
Doug R.

11
@DougR. No que diz respeito ao POSIX, os nomes de usuário dependem de maiúsculas e minúsculas. Diferença entre maiúsculas e minúsculas teria sido especificada. A distinção entre maiúsculas e minúsculas está implícita ao se referir ao conjunto de caracteres do nome do arquivo portátil.
Jlliagre

Obrigado pelo esclarecimento. Essa foi minha suposição inicial, mas não consegui encontrar nada sobre o conjunto de caracteres de nome de arquivo portátil que afirmava isso de uma maneira ou de outra.
Doug R.

5

Sim, diferencia maiúsculas de minúsculas. Não consigo trazer informações técnicas, acabei de testá-las e me pergunto por que você não (?)

minha máquina local é linux mint, como você pode ver:

# cat /etc/*release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.2
DISTRIB_CODENAME=rafaela
DISTRIB_DESCRIPTION="Linux Mint 17.2 Rafaela"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
cat: /etc/upstream-release: Is a directory

e eu tentei conectar ao servidor CentOS assim:

· Usando nome de usuário em maiúsculas (incorreto):

8D prova # ssh Root@agora-server
Root@agora-server's password: 
Permission denied, please try again.
Root@agora-server's password: 
Permission denied, please try again.
Root@agora-server's password: 

· Usando o nome de usuário correto:

8D prova # ssh root@agora-server
root@agora-server's password: 
Last login: Fri Oct  2 01:50:13 2015 from 192.168.0.31
[root@agora-server ~]# 

Como uma questão secundária, não é uma boa prática de segurança permitir o login SSH como root, como foi feito aqui (principalmente se a máquina estiver voltada para a Internet). Hoje em dia com o OpenSSH, isso geralmente deve ser explicitamente ativado com a opção PermitRootLogin no sshd_config. É preferível fazer login como um usuário normal e, em seguida, usar sudo ou su para se tornar root somente quando necessário.
JohnGH

Sim, está correto. Concordo, primeiro porque é um superusuário e, em segundo lugar, o nome de usuário 'root' é conhecido pelo invasor, que só precisa pegar a senha. De qualquer forma, na verdade, é apenas uma Máquina Virtual em execução localmente, não exposta à internada. A boa prática é usar RSA certificados SSH para login, ou / plus porta ssh aberta apenas para os pedidos provenientes dos endereços permitidos (regras de firewall)
lese

3

No caso de contas locais, o nome de usuário faz distinção entre maiúsculas e minúsculas. Quando você usa LDAP, isso depende. Vi casos em que o nome de usuário faz distinção entre maiúsculas e minúsculas (em um dispositivo ZFS conectado ao LDAP) e casos em que isso não importa, como o cliente LDAP do Solaris conectado ao Windows AD.

O que você deve / pode tentar é verificar se o seu sistema está usando o LDAP corretamente emitindo getent passwd <username> . O uso desse comando deve fornecer um registro com o nome de usuário, o diretório inicial e o shell do usuário especificado. Se você não vir esse registro, o LDAP não está configurado corretamente.

Existem vários locais onde você deve configurar o LDAP e um dos locais é:

/etc/nsswitch.conf

passwd: files ldap
group:  files ldap

Você também precisa verificar se o PAM está configurado corretamente e talvez a etapa mais importante seja verificar se o cliente LDAP está configurado e funcionando. Experimente uma ferramenta comoldapsearch verificar se o LDAP pode ser consultado.

Existem vários livros de receitas LDAP disponíveis e a maioria deles depende da versão do Unix e da versão do LDAP que você está usando. Atualize sua pergunta com esses detalhes se precisar de mais assistência. Inclua também sua configuração (sem senhas, é claro), que pode ajudar os membros do fórum a analisar seu problema específico.


1

Os nomes de usuário Unix definitivamente diferenciam maiúsculas de minúsculas e, além do mais, o uso de nomes de usuário com caracteres maiúsculos nos sistemas Unix pode produzir resultados indesejados; portanto, geralmente deve ser evitado.

Alguns exemplos são:

Pode quebrar o email para o usuário. Os padrões para SMTP permitem que os endereços de email não diferenciam maiúsculas de minúsculas e, por padrão, o MTA que recebe a mensagem dobrará o endereço de email em minúsculas para encontrar o usuário no qual entregar. Se o nome de usuário tiver caracteres maiúsculos, ele não será resolvido sem substituições especiais de configuração para atender a isso. (isso afeta os MTAs, como sendmail, postfix etc., e também agentes de processamento de entrega, como procmail)

Muitos terminais de hardware iniciais não diferenciavam maiúsculas de minúsculas. Era comum que eles usassem apenas maiúsculas. Ao fazer login em algumas versões do Unix, iniciar um nome de login com caracteres maiúsculos fará com que o sistema assuma que você está usando um terminal antigo somente em maiúsculas e habilite a dobra em maiúsculas - o que converte todas as maiúsculas inseridas em minúsculas ( você precisará escapar de caracteres maiúsculos para dizer que estão em maiúsculas) para ajudá-lo a inserir seu nome de usuário, que espera que esteja em minúsculas. Não acredito que isso seja uma coisa do Linux, mas já vi isso demonstrado no HP-UX.

Como há muito tempo é uma convenção usar apenas caracteres minúsculos nos nomes de usuários, é razoável esperar que outras ferramentas (algumas das quais talvez não tenhamos pensado) no sistema também possam assumir que o nome de usuário deve estar em minúsculas e fazer verificações, conversões etc. consequentemente, quebrando coisas para esse usuário.


0

Os nomes de usuário definitivamente diferenciam maiúsculas de minúsculas. Você pode testar isso facilmente adicionando dois usuários com nomes semelhantes:

~ # useradd foobar
~ # useradd fooBar
~ # grep ^foo /etc/passwd
foobar:x:1001:1001::/home/foobar:/bin/sh
fooBar:x:1002:1002::/home/fooBar:/bin/sh

Esta pergunta / resposta mostra como compensar alguém tentando fazer login com um nome de usuário com o caso "errado" de acordo com os servidores LDAP. Mas observe que isso só funcionará se os nomes de usuário estiverem listados em minúsculas (ou você poderá torná-los em maiúsculas, se desejar).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.