Na współczesnym systemie Unix lub Linux, w jaki sposób można określić, który kod ustawił plik /etc/passwd
przechowujący nazwy użytkowników? Czy nazwy użytkowników mogą zawierać znaki akcentowane (od zakresu 0x80..0xFF w, powiedzmy, ISO 8859-1 lub 8859-15)? Czy plik /etc/passwd
może zawierać UTF-8? Czy możesz powiedzieć, że zawiera on UTF-8? Co powiesz na zwykły tekst haseł, zanim zostaną zaszyfrowane lub zaszyfrowane?Który zestaw kodowy jest zapisany w/etc/passwd? Czy to może być UTF-8? Jakie ograniczenia są nałożone na nazwy użytkowników?
Oczywiście, jeśli nazwy użytkownika i inne dane są ograniczone do zakresu 0x00..0x7F (i tak czy inaczej wykluczają 0x00), to nie ma różnicy między UTF-8, 8859-1 lub 8859-15; obecne znaki są zakodowane tak samo.
Używam również jako skrótu do czegoś podobnego do "bazy danych identyfikacyjnych i uwierzytelniających użytkownika (czasami nazywanej usługą katalogową) na maszynie opartej na Uniksie, zwykle dostępnej przez PAM, a czasami hostowanej na innych maszyny całkowicie z lokalnego, ale czasami nadal jest to plik na lokalnym dysku twardym, zwykle nazywany /etc/passwd
, często obsługiwany przez /etc/shadow
". Zakładam również, że równoważne pytania dotyczące bazy danych grupy (często pliku /etc/group
) mają tę samą odpowiedź.
można dostarczyć dokument potwierdzający (a URL) twierdzenie? A co się stanie, jeśli bajty inne niż ASCII zostaną wprowadzone do pliku/etc/passwd? –
Dzięki za dodatkowe informacje. Przypuśćmy, że masz maszynę, do której dostęp mają ludzie z USA (terminale w 8859-1), Niemcy (8859-15) i Tajwan (UTF-8). Który zestaw kodowy jest teraz przechowywany w pliku haseł? –
To wciąż wszystko, co ASCII. To, co możesz wpisać, zależy od ustawień regionalnych terminala. Ale wyjście funkcji mieszającej zawsze będzie ASCII. Na przykład możesz utworzyć plik zawierający dowolne znaki, które chcesz, i uruchomić md5 na nim - a zestaw znaków oryginalnego pliku nie ma nic wspólnego z zestawem znaków wynikowego hasha. (tradycyjnie hash passwd jest generowany przez kryptę, ale nie md5). – nont