table of contents
LOGIN(1) | Instrukcja programisty Linuksa | LOGIN(1) |
NAZWA¶
login - zalogowanie się w systemie
SKŁADNIA¶
login [ nazwa ]
login -p
login -h nazwa_serwera
login -f nazwa
OPIS¶
login jest używany, aby dostać się do systemu. Może być również stosowany do przełączania się między różnymi kontami (jednak większość nowoczesnych powłok ma tę możliwość wbudowaną).
Jeżeli nie podano żadnego argumentu, login prosi o nazwę użytkownika.
Jeżeli użytkownik nie jest superużytkownikiem (rootem) oraz istnieje plik /etc/nologin, wypisywana jest zawartość tego pliku i proces logowania jest kończony (porażką). Ten sposób jest zwykle używany podczas wyłączania systemu.
Jeżeli danego użytkownika dotyczą ograniczenia opisane w pliku /etc/usertty, muszą być spełnione ich warunki; w przeciwnym wypadku wstęp do systemu zostanie uniemożliwiony i odpowiedni komunikat zostanie umieszczony w logu systemowym. Zajrzyj do sekcji "Wyjątkowe ograniczenia dostępu".
Jeżeli użytkownik jest superużytkownikiem, zalogowanie może dojść do skutku tylko z jednej z konsol wymienionych w pliku /etc/securetty. Nieudane próby zalogowania się będą notowane za pomocą funkcji syslog.
Po sprawdzeniu tych warunków, sprawdzone zostanie hasło (jeżeli jest wymagane dla danego użytkownika). Możliwych jest dziesięć prób, ale po pierwszych trzech kolejne żądania pojawiają się po odczekaniu pewnego czasu. Nieudane próby zalogowania są notowane funkcją syslog. Notowane są również udane logowania superużytkownika.
Jeżeli istnieje plik .hushlogin, wówczas wykonywane jest "ciche" logowanie do systemu, czyli nie jest sprawdzana skrzynka pocztowa, nie jest wypisywany czas poprzedniego zalogowania oraz wiadomość dnia (message of the day). W przeciwnym wypadku, jeżeli istnieje plik /var/log/lastlog, wypisywany jest czas poprzedniego zalogowania oraz zapisywany jest czas bieżącego rozpoczęcia sesji.
Wykonywane są rozmaite zadania administracyjne takie, jak ustawianie numerów UID oraz GID terminala (tty). Zachowywana jest zmienna środowiskowa TERM, jeżeli istnieje. Inne zmienne są zachowywane, jeżeli użyto opcji -p. Ustawiane są następnie zmienne HOME, PATH, SHELL, TERM, MAIL i LOGNAME. Zmienna PATH dostaje domyślną wartość /usr/local/bin:/bin:/usr/bin:. dla zwykłego użytkownika, lub /sbin:/bin:/usr/sbin:/usr/bin dla superużytkownika. Na końcu, jeżeli logowanie nie jest "ciche", wypisywana jest wiadomość dnia oraz sprawdzany jest plik o nazwie użytkownika w katalogu /usr/spool/mail; jeżeli ma niezerową długość, wypisywana jest odpowiednia wiadomość ("You have new mail" - przyp. tłum.).
Następnie uruchamiana jest powłoka użytkownika. Jeżeli w pliku /etc/passwd użytkownikowi nie jest przypisany żadna powłoka, używany jest wówczas /bin/sh. Jeżeli w tymże pliku nie wymieniono nazwy katalogu domowego użytkownika, używany jest katalog główny (/). W katalogu domowym jest poszukiwany plik .hushlogin, wspomniany powyżej.
OPCJE¶
- -p
- Używany przez getty(8), by login nie usuwał zmiennych środowiskowych.
- -f
- Opcja używana do ominięcia drugiej autoryzacji użytkownika. Ta opcja nie działa dla superużytkownika i wydaje się nie działać pod Linuksem.
- -h
- Opcja używana przez inne serwery (np. telnetd(8)) do przekazania nazwy zdalnego komputera programowi login, by można ją było umieścić w plikach utmp oraz wtmp. Tej opcji może używać wyłącznie superużytkownik.
WYJĄTKOWE OGRANICZENIA DOSTĘPU¶
Superużytkownik może logować się wyłącznie z tych terminali, których nazwy wymieniono w pliku /etc/securetty. W każdej linii podawana jest nazwa jednego urządzenia tty (bez przedrostka /dev/). Jeżeli ten plik nie istnieje, superużytkownik może się zalogować z dowolnego terminala.
Plik /etc/usertty wprowadza dodatkowe ograniczenia dostępu dla konkretnych użytkowników. Jeżeli ten plik nie istnieje, nie są narzucane żadne dodatkowe ograniczenia dostępu. W pliku znajdują się kolejne sekcje. Istnieją ich trzy typy: CLASSES, GROUPS i USERS. Sekcja CLASSES definiuje klasy terminali i wzorce dla nazw serwerów. Sekcja GROUPS definiuje dozwolone terminale i komputery w ramach grupy, natomiast sekcja USERS definiuje powyższe dla konkretnych użytkowników.
Długość żadnej linii tego pliku nie może przekroczyć 255 znaków. Komentarze zaczynają się od znaku #; wszystkie następne znaki aż do końca linii są ignorowane.
Sekcja CLASSES¶
Sekcja CLASSES rozpoczyna się słowem CLASSES na początku linii (same wielkie litery). Wszystkie kolejne linie do rozpoczęcia kolejnej sekcji lub do końca pliku składają się z sekwencji słów rozdzielonych spacjami lub tabulatorami. Każda linia definiuje klasę terminali i wzorzec nazwy serwera.
Pierwsze słowo w linii staje się wspólną nazwą dla terminali i wzorców nazw serwerów opisanych w dalszej części linii. Wspólna nazwa może być używana w następujących niżej sekcjach GROUPS i USERS. Żadna z takich nazw klas nie może wystąpić w treści definicji klasy, by uniknąć prób rekurencyjnego opisu klas.
Przykładowa sekcja CLASSES:
CLASSES mojaklasa1 tty1 tty2 mojaklasa2 tty3 @.foo.com
Definuje ona klasy mojaklasa1 oraz mojaklasa2 jako opis treści występującej po prawych stronach obu linijek.
Sekcja GROUPS¶
Sekcja GROUPS definiuje terminale i serwery dozwolone dla grupy. Jeżeli użytkownik, zgodnie z plikami /etc/passwd i /etc/group, należy do grupy oraz jego grupa jest wymieniona w sekcji GROUPS w pliku /etc/usertty, wówczas może się zalogować, jeżeli jest to dozwolone dla grupy.
Sekcja GROUPS rozpoczyna się od słowa GROUPS na początku linii (same wielkie litery); każda następna linia składa się z ciągu słów porozdzielanych spacjami lub tabulatorami. Pierwsze słowo w linii jest nazwą grupy, a następne określają terminale i serwery, z których członkowie tej grupy mają dostęp. Może to wymagać użycia klas zdefiniowanych w jednej z poprzedzających sekcji CLASSES.
Przykładowa sekcja GROUPS.
GROUPS sys tty1 @.bar.edu stud mojaklasa1 tty4
Ten przykład pozwala członkom grupy sys logować się na terminalu tty1 z serwerów w domenie bar.edu. Użytkownicy należący do grupy stud mogą logować się z terminali/serwerów wymienionych w klasie mojaklasa1 lub z terminala tty4.
Sekcja USERS¶
Sekcja USERS rozpoczyna się od słowa USERS na początku linii (same wielkie litery); każda następna linia składa się z ciągu słów porozdzielanych spacjami lub tabulatorami. Pierwsze słowo w linii jest nazwą użytkownika, któremu wolno logować się z terminali i serwerów wymienionych w dalszej części linii. Może to wymagać użycia nazwy klasy zdefiniowanej w jednej z poprzedzających sekcji CLASSES. Jeżeli na początku pliku nie ma nagłówka, pierwsza sekcja jest domyślnie sekcją USERS.
Przykładowa sekcja USERS:
USERS zacho tty1 @130.225.16.0/255.255.255.0 blue tty3 mojaklasa2
Użytkownik zacho może logować się tylko z terminala tty1 i z serwerów o adresach IP w zakresie od 130.225.16.0 do 130.225.16.255. Użytkownik blue może logować się z terminala tty3 oraz z terminali/serwerów wymienionych w klasie mojaklasa2.
W sekcji USERS może wystąpić linia rozpoczynająca się od *. Taka definicja będzie się odnosiła do wszystkich użytkowników nie zdefiniowanych oddzielnie w innej linii (domyślny użytkownik).
Jeżeli użytkownik odpowiada zarówno jednej z linii w sekcji USERS, jak i w sekcji GROUPS, ma on dostęp do systemu z wszystkich terminali/serwerów wymienionych w obydwu dotyczących go liniach.
Źródła¶
Definicje terminali i serwerów używane w specyfikacjach klas nazywane są źródłami (origins). Opis źródła może mieć jedną z poniższych postaci:
- o
- Nazwa terminala bez przedrostka /dev/; na przykład tty1 lub ttyS0.
- o
- Ciąg @localhost, oznaczający, że użytkownik może się połączyć przez telnet lub rlogin z lokalnego serwera do niego samego. Pozwala to również na wykonywanie np. polecenia xterm -e /bin/login.
- o
- Przyrostek z nazwą domeny, np. @.jakaś.domena oznaczajacy, że użytkownik może łączyć się przez rlogin/telnet z dowolnego serwera, którego nazwa domeny kończy się na .jakaś.domena.
- o
- Zakres adresów IPv4, zapisany jako @x.x.x.x/y.y.y.y, gdzie x.x.x.x jest adresem IP w zwykłej notacji (liczby dziesiętne rozdzielone kropkami), a y.y.y.y jest maską bitową w tej samej notacji określającą, które bity w adresie należy porównać z adresem zdalnego serwera. Na przykład, @130.225.16.0/255.255.254.0 oznacza, że użytkownik może się łączyć przez rlogin/telnet z dowolnego serwera, które adres leży w zakresie 130.225.16.0 - 130.225.17.255.
Każde z powyższych źródeł może być poprzedzone określeniem czasu zgodnie z następującą składnią:
czas ::= '[' <dzień-lub-godz> [':' <dzień-lub-godz>]* ']' dzień ::= 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun' godz ::= '0' | '1' | ... | '23' zakres_godzin ::= <godz> | <godz> '-' <godz> dzień-lub-godzina ::= <dzień> | <zakres_godzin>
Na przykład, źródło postaci [mon:tue:wed:thu:fri:8-17]tty3 oznacza, że logowanie się jest dozwolone od poniedziałku do piątku między godziną 8:00, a 17:59 na terminalu tty3. Widać również, że zakres godzin a-b obejmuje cały czas pomiędzy a:00, a b:59. Pojedyncza godzina (np. 10) oznacza czas pomiędzy 10:00, a 10:59.
Nieokreślanie zakresu czasu przed terminalem/serwerem oznacza, że logowanie z tego źródła jest dozwolone w dowolnym momencie. Jeżeli określasz czas, miej pewność, że określasz zarówno zakres dni, jak i godzin (lub pojedynczą godzinę). W określeniu czasu nie mogą się znajdować żadne białe spacje.
Jeżeli nie istnieje domyślny użytkownik (*), użytkownicy nie wymienieni w żadnej z linii pliku /etc/usertty mogą się logować skądkolwiek, co odpowiada standardowemu zachowaniu się programu login.
PLIKI¶
/var/run/utmp /var/log/wtmp /var/log/lastlog /usr/spool/mail/* /etc/motd /etc/passwd /etc/nologin /etc/usertty .hushlogin
ZOBACZ TAKŻE¶
init(8), getty(8), mail(1), passwd(1), passwd(5), environ(7), shutdown(8)
PROBLEMY¶
GNU/Linux, w przeciwieństwie do innych systemów operacyjnych o drakońskich restrykcjach, nie sprawdza udziałów (quotas) dyskowych.
Nieudokumentowana opcja -r z systemu BSD nie działa. Może to być wymagane przez niektóre programy rlogind(8).
AUTOR¶
Program pochodzi od oryginalnej wersji BSD login 5.40 (9-5-89),
której autorem był Michael Glad (glad@daimi.dk) (dla systemu
HP-UX).
Dostosowanie do Linuksa 0.12: Peter Orbaek (poe@daimi.aau.dk)
4 listopada 1996 | Programy użytkowe 1.6 |