email: darw32@poczta.onet.pl


Linux - 9.Zarządzanie Kontami Użytkowników

Tworzenie Użytkownika

Jądro Linuxa traktuje użytkowników jako liczby. Każdy użytkownik identyfikowany jest poprzez unikalną liczbę całkowitą - id użytkownika, lub uid, dzieje się tak dlatego, że liczby najszybciej się przetwarza. Zewnętrzna baza zawiera odpowiednie przypisania - użytkownik i jego identyfikator.

Aby stworzyć użytkownika należy zmienić bazę użytkowników, utworzyć katalog domowy. Można go również pouczyć i przygotować mu środowisko pracy.

Większość dystrybucji posiada właściwe sobie programy, np. pracujące w środowisku graficznym. Zazwyczaj ogólnie rozprowadzanymi są: adduser i useradd. Sekcja "Ręczne tworzenie użytkownika" opisuje ręczne dodawanie użytkowników.

/etc/passwd i inne pliki

Podstawową bazą użytkowników w Uniksach jest plik textowy /etc/passwd (nazywany plikiem haseł), który zawiera wszystkich poprawnych użytkowników, oraz niektóre informacje o nich. Na jednego użytkownika przypada jedna linia zawierająca siedem, oddzielonych dwukropkami, pól:

  • Nazwa użytkownika.
  • Hasło w postaci zakodowanej.
  • Numeryczny identyfikator użytkownika.
  • Numeryczny identyfikator grupy.
  • Imię i nazwisko, oraz dodatkowy opis użytkownika.
  • Katalog domowy.
  • Powłoka logowania (program uruchamiany po zalogowaniu się).

Strona podręcznika dotycząca passwd zawiera więcej informacji.

Każdy z użytkowników może odczytać plik haseł, a w ten sposób poznać nazwy innych użytkowników. Oznacza to, że hasła (w postaci zakodowanej) są dostępne dla wszystkich; teoretycznie nie powinno być to groźne. Niestety kodowanie można złamać, zwłaszcza gdy hasło jest słabe (jest zbyt krótkie, można je znaleźć w słowniku, lub, co gorsza, domyśleć się go). Dlatego, z czasem, hasła zostały przeniesione do osobnego pliku.

Wiele systemów zaimplementowało system ukrytych haseł. Jest to alternatywna metoda przechowywania zakodowanych haseł, która używa plik /etc/shadow, który odczytywalny jest tylko przez roota. /etc/passwd zawiera specjalny znacznik oznaczający, że hasło znajduje się gdzieś indziej. Każdy program dokonujący autoryzacji użytkowników musi mieć ustawiony bit setuid. Normalne programy, które potrzebują innych pól, działają bez zmian (wszystkie informacje o użytkowniku znajdują się w pliku haseł, za wyjątkiem hasła :-)).

Używanie Numerycznych Identyfikatorów

Najczęściej nie musisz znać numerycznych numerów identyfikacyjnych, jednak wiedza ta staje się potrzebna gdy używasz Sieciowego systemu plików (NFS) - na wszystkich komputerach identyfikatory muszą się zgadzać. Dzieje się tak ponieważ NFS rozróżnia użytkowników po ich identyfikatorach numerycznych.

Chcąc używać NFS musisz wynaleźć mechanizm synchronizacji informacji o kontach. W tym celu można użyć systemu NIS (opis w network-admin-guide).

Zasadniczo nie powinieneś używać starych identyfikatorów (textowych, czy numerycznych) - nowy użytkownik mógłby przejąć pliki starego użytkownika.

Zarządzanie Grupami

Są dwie szkoły zarządzania grupami: domyślnie tworzyć dla każdego użytkownika nową grupę, lub dołączać go do podanej. Każde z tych podejść ma wady i zalety.

Tworzenie osobnych grup dla użytkowników zwiększa bezpieczeństwo ich danych - dodatkowa grupa praw dostępu, którą nie muszą się zajmować - prawa dla grupy nie są ważne gdy tylko jeden użytkownik do niej należy. Jeżeli chcesz zarządzać dużą grupą użytkowników, traktować ich na równych prawach lepiej domyślnie umieszczać ich w jednej grupie.

Ja w każdym przypadku powinieneś mieć swoje zdanie, tylko ty możesz określić swoje potrzeby, więc sam je realizuj.

Domyślne środowisko: /etc/skel

Zazwyczaj podczas tworzenia katalogu domowego użytkownika zostają do niego skopiowane pliki z katalogu /etc/skel. Dzięki temu administrator systemu może stworzyć pliki, które dostarczą użytkownikowi przyjaznego środowiska. Dla przykładu, w pliku /etc/skel/.profile można ustawić zmienną EDITOR na jakiś edytor przyjazny nowicjuszom ( vi ;-).

Zazwyczaj część konfiguracji umieszcza się w globalnych plikach konfiguracyjnych - w ten sposób gdy zmieni się edytor możesz szybko zaktualizować ustawienia użytkowników. Powinieneś pomyśleć nad pewnym podziałem: zmienne, itp. lepiej umieszczać w plikach globalnych, natomiast ustawienia dla poszczególnych programów, które użytkownicy zapewne będą chcieli zmienić, w katalogach domowych.

Ręczne Tworzenie Użytkownika

Aby ręcznie stworzyć konto wykonaj następujące kroki:

  • Zmień /etc/passwd za pomocą vipw, dodaj odpowiednią linię dla nowego użytkownika. Nie zmieniaj tego pliku bezpośrednio za pomocą edytora! vipw blokuje plik, co uniemożliwia innym programom jego zmiany. Jako hasło powinieneś wstawić "*" - blokując konto.

  • Zmień /etc/group za pomocą vigr.

  • Utwórz katalog domowy użytkownika.

  • Skopiuj pliki z /etc/skel do utworzonego katalogu.

  • Ustaw właściciela i prawa dostępu za pomocą chown i chmod. Przydatną jest opcja -R. Poprawne prawa dostępu są różne na różnych systemach, jednak polecenia wyglądać powinny podobnie:

    cd /home/nazwa_użytkownika
    chown -R nazwa.grupa .
    chmod -R go=u,go-w .
    chmod go= .
    
  • Ustaw hasło za pomocą passwd.

Po ustawieniu hasła użytkownik może się zalogować, więc powinno to być ostatnim krokiem.

Czasami trzeba utworzyć bezużytkownikowe konto, dla przykładu: anonimowy serwer FTP potrzebuje użytkownika ftp. W takim wypadku powinieneś blokować takie konta - w ten sposób tylko root może stać się takim użytkownikiem, nikt się nie może zalogować.