Czy w nazwie użytkownika w Uniksie rozróżniana jest wielkość liter?

20

Czy ssh abc@servernameróżni się od ssh Abc@servername? Czy przypadek nazwy użytkownika ma znaczenie w Uniksie?

Mój użytkownik uwierzytelnia się przez LDAP.

saga saga
źródło
3
W prawie wszystkich systemach Linux rozróżniana jest wielkość liter. Czyli: cdnie jest taki sam jak CD... Jedynym sposobem, aby uczynić je naprawdę znaczy to samo, aby ustawić aliasy w .bashrcpliku ..
ryekayo
1
Przypuszczam, że to zależy od tego, jakiego atrybutu LDAP używasz dla nazwy użytkownika. Jeśli jest to UID z RFC 4519 , to nie rozróżnia wielkości liter, ale implementacje uwierzytelniania mogą nadal narzucać znaczenie wielkości liter. Zależy to również od tego, jak dokładnie odbywa się uwierzytelnianie za pomocą LDAP.
Stéphane Chazelas,
1
Po prostu próba zalogowania się przy użyciu dużej nazwy użytkownika odpowiedziałaby na to w kilka sekund.
Lekkość ściga się z Moniką

Odpowiedzi:

14

Podobnie jak nazwy hostów i domen, nazwa użytkownika nie jest ściśle uniksowa, ale może i często obejmuje szerszy zakres typów systemów operacyjnych.

To, czy zostaną uwzględnione rozróżnianie wielkości liter, zależy od standardu użytego do ich określenia.

W nazwach hostów i nazw domen standard DNS wyraźnie nie rozróżnia wielkości liter (patrz RFC4343 ).

Nazwy użytkowników przechowywane w lokalnym backendie (/ etc / passwd) lub w stylu uniksowym (NIS) nie uwzględniają wielkości liter w standardzie POSIX .

Nazwy użytkowników przechowywane w serwerze LDAP lub wewnętrznej bazie danych usługi Active Directory będą zgodne z definicją użytego schematu atrybutu, uidi cnktóre często przechowują nazwę użytkownika, mają różne atrybuty schematu, w przypadku tych pierwszych rozróżniana jest wielkość liter, a w przypadku drugiej rozróżniana jest wielkość liter. Oznacza to oba Abci abcmoże pasować do abcwpisu lub nie , w zależności od konfiguracji serwera ldap.

Z powodu tej niespójności zalecałbym używanie małych liter zarówno dla nazw użytkowników, jak i nazw hosta / domeny, a następnie unikanie tego, ssh [email protected]co jest niegrzeczne.

jlliagre
źródło
1
Tak więc sposób, w jaki czytam standard POSIX , ponieważ nie jest on określony jako rozróżniający małe lub duże litery i dostępny jest cały zestaw znaków w przenośnej nazwie pliku (który obejmuje zarówno wielkie, jak i małe litery), byłoby to zależne od implementacji. Czy to jest poprawne? Biorąc to pod uwagę, czy istnieje standardowa konwencja?
Doug R.
1
@DougR. Jeśli chodzi o POSIX, nazwy użytkowników zależą od wielkości liter. W przeciwnym razie zostałaby określona rozróżnianie wielkości liter. Rozróżniana jest wielkość liter w odniesieniu do zestawu znaków przenośnej nazwy pliku.
jlliagre
Dziękuję za wyjaśnienie. Takie było moje początkowe założenie, ale nie mogłem znaleźć niczego dotyczącego przenośnego zestawu znaków w nazwie pliku, który by to określał w ten czy inny sposób.
Doug R.
5

Tak, wielkość liter ma znaczenie. Nie jestem w stanie dostarczyć informacji technicznych, właśnie to przetestowałem i zastanawiam się, dlaczego nie (?)

moją maszyną lokalną jest Linux, jak widać:

# 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

i próbowałem połączyć się z serwerem CentOS w następujący sposób:

· Używanie (złej) nazwy użytkownika pisanej wielkimi literami:

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: 

· Używanie poprawnej nazwy użytkownika:

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 ~]# 
lese
źródło
Z drugiej strony, ze względów bezpieczeństwa nie jest dozwolone zezwalanie na logowanie SSH jako root tak, jak zostało to tutaj zrobione (szczególnie, jeśli komputer jest połączony z Internetem) 😱 W dzisiejszych czasach w OpenSSH należy to zwykle wyraźnie włączyć za pomocą opcji PermitRootLogin w w sshd_config. Zalecane jest zalogowanie się jako zwykły użytkownik, a następnie użycie sudo lub su, aby zostać rootem tylko w razie potrzeby.
JohnGH,
Tak, zgadzam się Zgadzam się, po pierwsze, ponieważ jest to superużytkownik, a po drugie, nazwa użytkownika root jest znana atakującemu, który musi tylko złapać hasło. W każdym razie jest to właściwie tylko wirtualna maszyna działająca lokalnie, nie narażona na działanie internowanego. Dobrą praktyką jest używanie certyfikatów RSA SSH do logowania lub otwartego portu SSH tylko dla żądań przychodzących z dozwolonych adresów (reguły zapory ogniowej)
patrz
3

W przypadku kont lokalnych w nazwie użytkownika rozróżniana jest wielkość liter. Gdy używasz LDAP, to zależy. Widziałem przypadki, w których nazwa użytkownika rozróżnia małe i wielkie litery (na urządzeniu ZFS podłączonym do LDAP) i przypadki, w których nie ma to znaczenia, jak klient Solaris LDAP podłączony do Windows AD.

To, co powinieneś / możesz spróbować, to sprawdzić, czy Twój system prawidłowo używa LDAP, wydając getent passwd <username>. Użycie tego polecenia powinno dać ci rekord z nazwą użytkownika, katalogiem domowym i powłoką dla określonego użytkownika. Jeśli nie widzisz takiego rekordu, LDAP nie jest poprawnie skonfigurowany.

Istnieje kilka miejsc, w których należy skonfigurować LDAP, a jednym z nich jest:

/etc/nsswitch.conf

passwd: files ldap
group:  files ldap

Musisz także sprawdzić, czy PAM jest poprawnie skonfigurowany i być może najważniejszym krokiem jest sprawdzenie, czy klient LDAP jest skonfigurowany i działa. Wypróbuj narzędzie takie jak ldapsearchsprawdzenie, czy można zapytać o LDAP.

Dostępnych jest kilka książek kucharskich LDAP, a większość z nich zależy od wersji Unix i używanej wersji LDAP. Zaktualizuj swoje pytanie o te szczegóły, jeśli potrzebujesz dalszej pomocy. Dołącz również konfigurację (oczywiście bez hasła), która może pomóc członkom forum w analizie konkretnego problemu.

Lambert
źródło
1

W nazwach użytkowników uniksowych zdecydowanie rozróżniana jest wielkość liter, a ponadto używanie nazw z wielkimi literami w systemach uniksowych może dawać niepożądane wyniki, więc ogólnie należy tego unikać.

Oto niektóre przykłady:

Może złamać e-mail dla użytkownika. Standardy SMTP zezwalają na to, aby adresy e-mail nie rozróżniały wielkości liter, a domyślnie MTA odbierający wiadomość składa adres e-mail małymi literami, aby znaleźć użytkownika, do którego ma zostać dostarczony. Jeśli nazwa użytkownika ma wielkie litery, nie zostanie ona rozwiązana bez specjalnych zastąpień konfiguracji, aby to uwzględnić. (wpływa to na MTA, takie jak sendmail, postfix itp., a także agentów przetwarzania dostaw, takich jak procmail)

Wiele wczesnych terminali sprzętowych nie rozróżniało wielkości liter. Często używano tylko wielkich liter. Podczas logowania do niektórych wersji Uniksa rozpoczęcie nazwy logowania od wielkich liter spowoduje, że system przyjmie, że używasz starożytnego terminala składającego się wyłącznie z wielkich liter i umożliwi składanie wielkich liter - co spowoduje konwersję wszystkich wprowadzonych wielkich liter na małe litery ( następnie musisz uciec dużymi literami, aby powiedzieć, że są wielkie), aby pomóc Ci wprowadzić nazwę użytkownika, która według niej będzie pisana małymi literami. Nie sądzę, że jest to coś w Linuksie, ale widziałem to na HP-UX.

Ponieważ od dawna w konwencji używa się tylko małych liter w nazwach użytkowników, uzasadnione jest oczekiwanie, że inne narzędzia (niektóre, o których nie pomyśleliśmy) w systemie, mogą również zakładać, że nazwa użytkownika powinna być pisana małymi literami, a także sprawdzania, konwersji itp. odpowiednio, w ten sposób niszcząc rzeczy dla tego użytkownika.

JohnGH
źródło
0

W nazwach użytkowników zdecydowanie rozróżniana jest wielkość liter. Możesz to łatwo przetestować, dodając dwóch użytkowników o podobnych nazwach:

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

To pytanie / odpowiedź pokazuje, jak zrekompensować osobę próbującą zalogować się przy użyciu nazwy użytkownika, która ma „niewłaściwą” wielkość liter, zgodnie z serwerami LDAP. Pamiętaj jednak, że zadziała to tylko wtedy, gdy nazwy użytkowników będą wymienione małymi literami (lub jeśli chcesz, możesz wpisać je wielkimi literami).

Falsenames
źródło