login.defs

NAZWA

/etc/login.defs - konfiguracja logowania

OPIS

Plik /etc/login.defs definiuje specyficzną dla naszej maszyny konfigurację pakietu shadow login. Plik ten jest wymagany. Jego nieobecność nie wstrzyma działania systemu, ale prawdopodobnie spowoduje nieprzewidywalne działanie.

Plik ten jest czytelnym plikiem tekstowym. Każdy z jego wierszy opisuje jeden parametr konfiguracji. Wiersze składają się z nazwy parametru i jego wartości, oddzielonych białym znakiem. Ignorowane są puste wiersze i wiersze komentarzy. Komentarze rozpoczynają się od znaku '#', który musi być pierwszym znakiem wiersza (pomijając białe znaki).

Istnieją cztery typy wartości parametrów: napisy, logiczne (boolean), liczby i długie liczby (long numbers). Napis jest złożony z dowolnych znaków drukowalnych. Parametr logiczny może mieć albo wartość "yes" albo "no". Niezdefiniowanemu parametrowi logicznemu lub parametrowi, któremu przypisano wartość inną od powyższych przypisane zostanie "no". Liczby (zarówno zwykłe jak i długie) mogą być wartościami dziesiętnymi, ósemkowymi (poprzedź wartość cyfrą "0") albo szesnastkowymi (poprzedź wartość sekwencją "0x"). Maksymalne wartości zwykłych i długich parametrów numerycznych zależą od maszyny.

Obsługiwane są następujące opcje konfiguracyjne:

CHFN_AUTH (logiczna)
Jeżeli ma wartość yes, to programy chfn i chsh będą pytać o hasło przed dokonaniem zmian, chyba że uruchamiane są przez superużytkownika.
CHFN_RESTRICT (napis)
Ten parametr określa, jakie wartości w polu gecos pliku passwd mogą być zmieniane przez zwykłych użytkowników za pomocą programu chfn Może on być dowolną kombinacją liter f, r, w, h, oznaczających odpowiednio: Full name (pełna nazwa), Room number (numer pokoju), Work phone (telefon służbowy) i Home phone (telefon domowy). Jeśli parametr nie jest podany, to zmian może dokonywać wyłącznie superużytkownik.
CONSOLE (napis)
Jeśli podana, definicja ta określa ograniczony zestaw linii, na których dozwolone jest rozpoczynanie sesji użytkownika root. Próby logowania użytkownika root niespełniające ustalonych tu kryteriów zostaną odrzucone. Wartość tego pola może wystąpić w jednej z dwu postaci: albo pełnej nazwy ścieżkowej pliku, jak na przykład

      CONSOLE /etc/consoles

albo listy linii terminalowych rozdzielonych dwukropkami, jak poniżej:

      CONSOLE console:tty01:tty02:tty03:tty04

(Zauważ, że wymienione tu nazwy nie zawierają ścieżki /dev/). Jeżeli podano ścieżkową nazwę pliku, to każdy jego wiersz powinien określać jedną linię terminalową. Jeśli parametr ten nie jest zdefiniowany albo podany plik nie istnieje, to użytkownik root będzie mógł się logować z dowolnej linii terminalowej. Ponieważ usunięcie lub obcięcie pliku definiującego dozwolone linie może spowodować nieautoryzowane logowania roota, plik ten musi być chroniony. Tam, gdzie bezpieczeństwo jest sprawą kluczową, powinna być używana postać listy separowanej dwukropkami, co chroni przed potencjalną próbą ataku w opisany sposób.

CONSOLE_GROUPS (napis)
XXX powinno zostać udokumentowane.
CRACKLIB_DICTPATH (napis)
XXX powinno zostać udokumentowane.
DEFAULT_HOME (logiczna)
XXX powinno zostać udokumentowane.
DIALUPS_CHECK_ENAB (logiczna)
Jeżeli ma wartość yes a plik /etc/dialups istnieje, to na liniach telefonicznych wyszczególnionych w tym pliku są włączane wtórne hasła (hasła telefoniczne). Plik ten powinien zawierać listę linii telefonicznych (dialups), po jednej w wierszu, na przykład:
        ttyfm01
        ttyfm02
          .
          .
          .

ENVIRON_FILE (napis)
XXX powinno zostać udokumentowane.
ENV_HZ (napis)
Parametr ten określa wartość parametru środowiska HZ. Przykład użycia:

       ENV_HZ HZ=50

Jeżeli jest on zdefiniowany, to nie zostanie ustanowiona żadna wartość HZ.

ENV_PATH (napis)
Parametr ten musi być zdefiniowany jako ścieżka przeszukiwania dla zwykłych użytkowników. Przy logowaniu z UID innym niż zero, zmienna środowiskowa PATH jest inicjowana tą właśnie wartością. Jest to parametr wymagany; jeżeli nie zostanie zdefiniowany, to zostanie nadana, być może niepoprawna, wartość domyślna.
ENV_SUPATH (napis)
Parametr ten musi być zdefiniowany jako ścieżka przeszukiwania dla superużytkownika. Przy rozpoczynaniu sesji z UID równym zero, zmienna środowiskowa PATH jest inicjowana tą właśnie wartością. Jest to parametr wymagany; jeżeli nie zostanie zdefiniowany, to zostanie nadana, być może niepoprawna, wartość domyślna.
ENV_TZ (napis)
Parametr ten zawiera informację służącą do utworzenia zmiennej środowiskowej TZ. Jego wartość musi być albo wprost wymaganą zawartością TZ, albo pełną nazwą ścieżkową pliku zawierającego tę informację. Przykład użycia:

       ENV_TZ    TZ=CST6CDT

lub

       ENV_TZ    /etc/tzname

Jeżeli podano nieistniejący plik, to TZ zostanie zainicjowane pewną wartością domyślną. Jeżeli nie zdefiniowano tego parametru to nie będzie ustawiona żadna wartość TZ.

ERASECHAR (liczba)
Tą wartością jest inicjowany terminalowy znak erase (kasowania). Jest to obsługiwane tylko w systemach z interfejsem termio, np. System V. Jeżeli nie podano parametru, to znak kasowania zostanie zainicjowany na backspace. Informację powiązaną znajdziesz w opisie KILLCHAR.
FAILLOG_ENAB (logiczna)
Jeżeli ustawiona na yes to nieudane logowania będą odnotowywane w pliku /var/log/faillog w formacie faillog(8).
FAIL_DELAY (liczba)
Czas opóźnienia, wyrażony w sekundach, po każdej nieudanej próbie logowania.
FAKE_SHELL (napis)
Zamiast rzeczywistej powłoki użytkownika zostanie uruchomiony program określony wartością tego parametru. Nazwa widoczna (argv[0]) programu będzie jednak nazwą powłoki. Program przed uruchomieniem faktycznej powłoki może wykonywać dowolną akcję (logowanie, dodatkowe uwierzytelnianie, banner itp.).
FTMP_FILE (napis)
Określa pełną ścieżkową nazwę pliku, w którym rejestrowane są nieudane próby rozpoczynania sesji pracy. W przypadku nieudanej próby logowania do pliku dopisywana jest pozycja o formacie utmp. Zauważ, że różni się to od rejestracji niepomyślnych logowań do /var/log/faillog, gdyż opisywana funkcja odnotowuje wszystkie nieudane próby, podczas gdy "faillog" kumuluje informację o porażkach danego użytkownika. Jeśli nie podano tego parametru, to rejestracja będzie wyłączona. Powiązane informacje znajdziesz w opisie FAILLOG_ENAB i LOG_UNKFAIL_ENAB.
GID_MAX (liczba)
GID_MIN (liczba)
Zakres identyfikatorów grup, w obrębie którego może wybierać program groupadd.
HUSHLOGIN_FILE (nazwa)
Parametr używany do ustalenia okoliczności cichego logowania ("hushlogin"). Okoliczności te mogą być ustalone na dwa sposoby. Po pierwsze, jeżeli wartością parametru jest nazwa pliku, a plik ten istnieje w katalogu domowym użytkownika, to wprowadzane są warunki cichego logowania. Zawartość pliku jest ignorowana; sama jego obecność powoduje ciche logowanie. Po drugie, jeżeli wartością parametru jest pełna nazwa ścieżkowa pliku a w pliku tym znaleziona zostanie nazwa użytkownika lub nazwa jego powłoki, to wprowadzone zostaną warunki cichego logowania. W tym przypadku, plik powinien mieć format podobny do:
        demo
        /usr/lib/uucp/uucico
          .
          .
          .

Jeżeli nie zdefiniowano tego parametru, to warunki cichego logowania nigdy nie wystąpią. W trakcie cichego logowanie wstrzymane jest wyświetlanie wiadomości dnia (message of the day), ostatniego udanego i nieudanego rozpoczęcia sesji pracy, wyświetlanie stanu skrzynki pocztowej i sprawdzenie wieku hasła. Zauważ, że zezwolenie na pliki cichego logowania w katalogach domowych użytkowników pozwala im na wstrzymanie kontroli ważności hasła. Informacje związane z tym tematem znajdziesz w opisach MOTD_FILE, FILELOG_ENAB, LASTLOG_ENAB i MAIL_CHECK_ENAB.
ISSUE_FILE (napis)
Pełna ścieżkowa nazwa pliku wyświetlanego przed każdą zachętą do logowania.
KILLCHAR (liczba)
Tą wartością inicjowany jest terminalowy znak kill. Jest to obsługiwane tylko w systemach z interfejsem termio, np. System V. Jeżeli nie podano parametru, to znak kasowania zostanie zainicjowany na CTRL/U. Informację powiązaną znajdziesz w opisie ERASECHAR.
LASTLOG_ENAB (logiczna)
Jeśli ma wartość yes, i istnieje plik /var/log/lastlog, to w tym pliku będzie rejestrowane poprawne rozpoczęcie sesji pracy użytkownika (zalogowanie się). Ponadto, jeśli opcja ta jest włączona, to podczas logowania się użytkownika będzie wyświetlana informacja o liczbie ostatnich udanych i nieudanych logowań. Zakończone niepowodzeniem logowania nie będą wyświetlane jeśli nie włączono FAILLOG_ENAB. W warunkach cichego logowanie nie będą wyświetlane informacje ani o pomyślnych ani o niepomyślnych logowaniach.
LOGIN_RETRIES (liczba)
Dozwolona liczba prób logowania przed zakończeniem pracy programu login.
LOGIN_STRING (napis)
XXX powinno zostać udokumentowane.
LOGIN_TIMEOUT (liczba)
XXX powinno zostać udokumentowane.
LOG_OK_LOGINS (logiczna)
XXX powinno zostać udokumentowane.
LOG_UNKFAIL_ENAB (logiczna)
Jeśli posiada wartość yes to nieznane nazwy użytkowników będą również odnotowywane jeśli włączone jest rejestrowanie nieudanych prób rozpoczęcia sesji. Zauważ, że niesie to ze sobą potencjalne zagrożenie bezpieczeństwa: powszechną przyczyną nieudanego logowania jest zamiana nazwy użytkownika i hasła, tryb ten zatem spowoduje, że często w rejestrach nieudanych logowań będą się odkładać jawne hasła. Jeżeli opcja ta jest wyłączona, to nieznane nazwy użytkowników będą pomijane w komunikatach o nieudanych próbach logowania.
MAIL_CHECK_ENAB (logiczna)
Jeżeli ma wartość yes, to użytkownik po rozpoczęciu sesji pracy będzie powiadamiany o stanie swojej skrzynki pocztowej. Informację związaną z tym tematem znajdziesz w opisie MAIL_DIR.
MAIL_DIR (napis)
Określa pełną nazwę ścieżkową do katalogu zawierającego pliki skrzynki pocztowej użytkownika. Do powyższej ścieżki doklejana jest nazwa użytkownika, tworząc w ten sposób zmienną środowiskową MAIL - ścieżkę do skrzynki użytkownika. Musi być zdefiniowany albo niniejszy parametr albo parametr MAIL_FILE; jeśli nie zostaną zdefiniowane, to zostanie nadana, być może niepoprawna, wartość domyślna. Zobacz także opis MAIL_CHECK_ENAB.
MAIL_FILE (napis)
Określa nazwę pliku skrzynki pocztowej użytkownika. Nazwa ta doklejana jest na koniec nazwy katalogu domowego użytkownika tworząc zmienną środowiskową MAIL - ścieżkę do skrzynki użytkownika. Musi być zdefiniowany albo niniejszy parametr albo parametr MAIL_DIR; jeśli nie zostaną zdefiniowane, to zostanie nadana, być może niepoprawna, wartość domyślna. Zobacz także opis MAIL_CHECK_ENAB.
MD5_CRYPT_ENAB (logiczna)
Jeżeli ma wartość yes, to program passwd będzie kodować nowo zmieniane hasła przy pomocy nowego algorytmu crypt(3), opartego o MD-5. Algorytm ten pierwotnie pojawił się we FreeBSD i jest też obsługiwany przez libc-5.4.38 oraz glibc-2.0 (lub wyższą) w Linuksie. Pozwala on na używanie haseł dłuższych niż 8 znaków (ograniczone przez getpass(3) do 127 znaków), ale nie jest zgodny z tradycyjnymi implementacjami polecenia crypt(3).
MOTD_FILE (napis)
Określa listę rozdzielonych dwukropkami ścieżek do plików "wiadomości dnia" (message of the day, MOTD). Jeśli podany plik istnieje, to jego zawartość jest wyświetlana użytkownikowi podczas rozpoczynania przez niego sesji pracy. Jeżeli parametr ten jest niezdefiniowany lub wykonywane jest ciche logowanie, to informacja ta będzie pomijana.
NOLOGINS_FILE (napis)
Określa pełną nazwę ścieżkową pliku zabraniającego logowań dla użytkowników innych niż root. Jeżeli plik ten istnieje a użytkownik inny niż root usiłuje się zalogować, to wyświetlana zostanie zawartość pliku a użytkownik będzie rozłączony. Jeżeli nie podano tego parametru, to opisana funkcja będzie wyłączona.
OBSCURE_CHECKS_ENAB (logiczna)
Jeżeli ma wartość yes, to program passwd przed akceptacją zmiany hasła będzie wykonywał dodatkowe sprawdzenia. Kontrole te są dość proste, a ich użycie jest zalecane. Te sprawdzenia nieoczywistości są pomijane, jeżeli passwd uruchamiane jest przez użytkownika root. Zobacz także opis PASS_MIN_LEN.
PASS_ALWAYS_WARN (logiczna)
XXX powinno zostać udokumentowane.
PASS_CHANGE_TRIES (liczba)
XXX powinno zostać udokumentowane.
PASS_MIN_DAYS (liczba)
Minimalna liczba dni między dozwolonymi zmianami hasła. Jakiekolwiek próby zmiany hasła podejmowane wcześniej zostaną odrzucone. Jeżeli nie podano tego parametru, to przyjęta zostanie wartość zerowa.
PASS_MIN_LEN (liczba)
Minimalna liczba znaków w akceptowalnym haśle. Próba przypisania hasła o mniejszej liczbie znaków zostanie odrzucona. Wartość zero wyłącza tę kontrolę. Jeśli nie podano parametru, to przyjęta zostanie wartość zerowa.
PASS_MAX_DAYS (liczba)
Maksymalna liczba dni, przez jaką może być używane hasło. Jeśli hasło jest stanie się starsze, to rachunek zostanie zablokowany. Jeśli nie podano, to zostanie przyjęta bardzo duża wartość.
PASS_MAX_LEN (liczba)
XXX powinno zostać udokumentowane.
PASS_WARN_AGE (liczba)
Liczba dni ostrzegania przed wygaśnięciem hasła. Wartość zerowa oznacza, że ostrzeżenie wystąpi wyłącznie w dniu utraty ważności hasła. Wartość ujemna oznacza brak ostrzeżeń. Brak parametru oznacza, że ostrzeżenia nie będą wyświetlane.
PORTTIME_CHECKS_ENAB (logiczna)
Jeśli ma wartość yes, zaś plik /etc/porttime istnieje, to będzie on przeglądany, by upewnić się czy użytkownik może się w danej chwili zalogować na danej linii. Patrz także podręcznik porttime(5)
QUOTAS_ENAB (logiczna)
Jeśli ma wartość yes , wówczas dla danego użytkownika "ulimit," "umask" i "niceness" będą zainicjowane wartościami podanymi (o ile są podane) w polu gecos pliku passwd. Patrz także podręcznik passwd(5).
SU_NAME (napis)
Przypisuje nazwę polecenia do uruchomionego "su -". Na przykład, jeśli parametr ten jest zdefiniowany jako "su", to polecenie ps(1) pokaże uruchomione polecenie jako "-su". Jeśli parametr ten jest niezdefiniowany, to ps(1) pokaże nazwę faktycznie wykonywanej powłoki, np. coś w rodzaju "-sh".
SULOG_FILE (napis)
Pokazuje pełną nazwę ścieżkową pliku, w którym rejestrowane jest wykorzystanie su. Jeśli parametr ten nie jest określony, to rejestrowanie nie jest wykonywane. Ponieważ polecenie su może być używane podczas prób uwierzytelnienia hasła, do odnotowywania użycia su powinny być używane albo niniejsza opcja albo syslog. Zobacz też opis SYSLOG_SU_ENAB.
SU_WHEEL_ONLY (logiczna)
XXX powinno zostać udokumentowane.
SYSLOG_SG_ENAB (logiczna)
XXX powinno zostać udokumentowane.
SYSLOG_SU_ENAB (logiczna)
Jeżeli ma wartość yes, zaś program login został skompilowany z obsługą syslog, to wszelkie działania su będą rejestrowane za pomocą syslog. Zobacz też opis SULOG_FILE.
TTYGROUP (napis lub liczba)
Grupa (właścicielska) terminala inicjowana jest na nazwę bądź numer tej grupy. Jeden z dobrze znanych ataków polega na wymuszeniu sekwencji kontrolnych terminala na linii terminalowej innego użytkownika. Problemu tego można uniknąć wyłączając prawa zezwalające innym użytkownikom na dostęp do linii terminalowej, ale niestety zapobiega to również działaniu programów takich jak write. Innym rozwiązaniem jest posłużenie się taką wersją programu write, która odfiltrowuje potencjalnie niebezpieczne sekwencje znaków. Następnie programowi należy przyznać rozszerzone prawa dostępu (SGID) dla specjalnej grupy, ustawić grupę właścicieli terminala na tę grupę i nadać prawa dostępu 0620 do linii. Definicja TTYGROUP powstała do obsługi tej właśnie sytuacji. Jeśli pozycja ta nie jest zdefiniowana, to grupa terminala inicjowana jest na numer grupy użytkownika. Zobacz także TTYPERM.
TTYPERM (liczba)
Tą wartością inicjowane są prawa terminala logowania. Typowymi wartościami są 0622 zezwalające innym na pisanie do linii lub 0600 zabezpieczające linię przed innymi użytkownikami. Jeżeli nie podano tego parametru, to prawa dostępu do terminala zostaną zainicjowane wartością 0622. Zobacz też TTYGROUP.
TTYTYPE_FILE (napis)
Określa pełną nazwę ścieżkową pliku przypisującego typy terminali do linii terminalowych. Każdy z wierszy tego pliku zawiera rozdzielone białym znakiem typ i linię terminala. Na przykład:
        vt100   tty01
        wyse60  tty02
          .       .
          .       .
          .       .

Informacja ta służy do inicjowania zmiennej środowiska TERM. Wiersz rozpoczynający się znakiem # będzie traktowany jak komentarz. Jeżeli nie podano tego parametru lub plik nie istnieje albo nie znaleziono w nim linii terminala, to zmienna TERM nie zostanie ustawiona.
UID_MAX (liczba)
XXX powinno zostać udokumentowane.
UID_MIN (liczba)
XXX powinno zostać udokumentowane.
ULIMIT (długa liczba)
Wartością tą inicjowany jest limit wielkości pliku. Cecha ta obsługiwana jest wyłącznie w systemach posiadających ulimit, np. System V. Jeśli nie podano, to limit wielkości pliku zostanie ustalony na pewną wielką wartość.
UMASK (liczba)
Tą wartością inicjowana jest maska praw dostępu. Nie podana, ustawia maską praw na 077.
USERDEL_CMD (napis)
XXX powinno zostać udokumentowane.

POWIĄZANIA

Poniższe zestawienie pokazuje, które z programów wchodzących w skład pakietu shadow wykorzystują jakie parametry.
login
CONSOLE DIALUPS_CHECK_ENAB ENV_HZ ENV_SUPATH ENV_TZ ERASECHAR FAILLOG_ENAB FTMP_FILE HUSHLOGIN_FILE KILLCHAR LASTLOG_ENAB LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB MAIL_DIR MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB TTYPERM TTYTYPE_FILE ULIMIT UMASK
newusers
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE UMASK
passwd
OBSCURE_CHECKS_ENAB PASS_MIN_LEN
pwconv
PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
su
ENV_HZ ENV_SUPATH ENV_TZ HUSHLOGIN_FILE MAIL_CHECK_ENAB MAIL_DIR MOTD_FILE QUOTAS_ENAB SULOG_FILE SYSLOG_SU_ENAB
sulogin
ENV_HZ ENV_SUPATH ENV_TZ MAIL_DIR QUOTAS_ENAB TTYPERM

BŁĘDY

Niektóre z obsługiwanych parametrów konfiguracyjnych pozostały nieopisane w niniejszym podręczniku.

ZOBACZ TAKŻE

login(1), faillog(5), passwd(5), porttime(5), faillog(8)

AUTORZY

Julianne Frances Haugh (jockgrrl@ix.netcom.com)
Chip Rosenthal (chip@unicom.com)