Rozdział 12 Podstawy administracji systemem

Spis treści
12.1 Users and Groups
12.2 Users and Groups, the Hard Way
12.3 Shutting Down Properly

Spokojnie, spokojnie... Znam twoje myśli: “Nie jestem administratorem systemu! Nigdy nawet nie myślałem, by nim zostać! ”

Prawda jest taka, że jesteś administratorem na każdym komputerze, na którym posiadasz hasło root'a. Może to być zwykły komputer biurowy, na którym urzęduje jeden bądź dwóch użytkowników, albo też może to być duży serwer z paroma setkami użytkowników. Niezależnie od tego, z pewnością przydatna okaże się wiedza jak zarządzać użytkownikami oraz jak poprawnie zamykać system. Te zadania nie wyglądają na szczególnie skomplikowane, ale znajdzie się kilka drobiazgów na które trzeba uważać.

12.1 Users and Groups

Jak wspomniano w Rozdział 8, na co dzień nie powinieneś się logować do systemu jako root. Zamiast tego najlepiej stworzyć sobie konto zwykłego użytkownika do użytku codziennego, zaś konta root'a używać jedynie do wykonywania zadań administracyjnych. By stworzyć w systemie nowego użytkownika, możesz albo użyć narzędzi dostarczanych w tym celu razem ze Slackware, albo też bezpośrednio edytować odpowiednie pliki.

12.1.1 Supplied Scripts

Najłatwiejszy sposób zarządzania użytkownikami i grupami to sposób wspierany przez gotowe skrypty i programy. Slackware zawiera programy: adduser, userdel(8), chfn(1), chsh(1) oraz passwd(1), służące do zarządzania kontami użytkowników. Polecenia groupadd(8), groupdel(8) oraz groupmod(8) służą do zarządzania grupami. Za wyjątkiem komend chfn, chsh oraz passwd, wszystkie wymienione programy są generalnie uruchamiane jedynie przez root'a; stąd też są zlokalizowane w katalogu /usr/sbin. chfn, chsh oraz passwd mogą być uruchomione przez każdego; znajdują się w /usr/bin.

Nowi użytkownicy mogą zostać dodani do systemu za pomocą polecenia adduser. Zaczniemy od przejścia przez całą procedurę, pokazując wszystkie zapytania kierowane do nas przez program, oraz pokrótce wyjaśniając ich znaczenie. Domyślna odpowiedź znajduje się w nawiasach i może być wybrana dla prawie każdego zapytania, dopóki oczywiście nie będziesz chciał czegoś zmienić.

# adduser
Login name for new user []: jellyd

Jest to nazwa której użytkownik będzie używał do logowania się. Tradycyjnie loginy są co najwyżej ośmioznakowe oraz pisane małymi literami. (Nic jednak nie stoi na przeszkodzie, by wpisać więcej znaków bądź użyć cyfr - ale unikaj tego dopóki nie masz dość dobrego powodu).

Możesz też podać login jako parametr w linii poleceń:

# adduser jellyd

W tym drugim przypadku, po ustaleniu loginu, adduser zapyta się o ID użytkownika:

User ID ('UID') [ defaults to next available ]:

To właśnie na podstawie ID użytkownika (w skrócie UID) ustala się prawa własności w Linuksie. Każdy użytkownik posiada swój unikalny numer, począwszy od 1000 w Slackware. Możesz sam ustalić numer dla nowego użytkownika, może to zrobić za ciebie adduser - poprzez przydzielenie pierwszego wolnego identyfitakora.

Initial group [users]:

Wszyscy użytkownicy są umieszczani domyślnie w grupie users. Możesz zapewne chcieć umieścić nowego użytkownika w innej grupie, ale nie jest to polecane dopóki naprawdę nie masz absolutnej pewności, że wiesz co robisz.

Additional groups (comma separated) []:

To pytanie pozwala na dodanie użytkownika dodatkowo do innych grup. Możliwa jest przynależność jednego użytkownika do kilku grup na raz w tym samym czasie. Jest to bardzo użyteczne, gdy masz już konkretnie zorganizowane grupy do robienia takich rzeczy jak np. modyfikowanie plików stron internetowych, granie w gry itp. Dla przykładu: niektóre lokalizacje [sites] definiują grupę wheel jako jedyną mogącą używać komendy su. Albo też drugi przykład: domyślnie podczas instalacji Slackware zostaje utworzona grupa sys, która posiada uprawnienia do odgrywania dźwięków za pomocą zamontowanej karty dźwiękowej.

Home directory [/home/jellyd]

Katalog domowy domyślnie zostanie umieszczony wewnątrz /home. Jeżeli zarządzasz naprawdę dużym systemem, to możliwe jest iż przeniosłeś katalogi domowe w inne miejsce (bądź inne miejsca). Ten krok pozwala ci określić, gdzie znajdzie się katalog domowy aktualnie dodawanego użytkownika.

Shell [ /bin/bash ]

bash jest powłoką domyślną dla Slackware i będzie odpowiedni dla większości osób. Jeżeli nowy użytkownik jest wychowankiem Uniksa, to być może będzie bardziej zaznajomiony z inną powłoką. Możesz zmienić domyślną powłokę na inną już teraz, albo też pozwolić użytkownikom zmienić ją później przy użyciu polecenia chsh.

Expiry date (YYYY-MM-DD) []:

Kontom można przydzielić czas wygaśnięcia z nastaniem pewnej daty. Domyślnie wygaśnięcie konta nie jest ustawione. Można jednak to zmienić, gdy zachodzi potrzeba - dostawcy internetu mogą na przykład chcieć utworzyć konto tracące ważność konkretnego dnia, gdy jego użytkownik nie opłacił abonamentu.

New account will be created as follows:
---------------------------------------
Login name:         jellyd
UID:                [ Next available ]
Initial group:      users
Additional groups:  [ None ]
Home directory:     /home/jellyd
Shell:              /bin/bash
Expiry date:        [ Never ]

No i gotowe.. jeżeli chcesz zrezygnować, naciśnij Control+C. W przeciwnym wypadku wciśnij ENTER by kontynuować tworzenie konta.

Widzisz teraz wszystkie informacje odnośnie nowego konta, które wprowadziłeś, oraz masz możliwość przerwania procesu tworzenia nowego konta użytkownika. Jeżeli stwierdzisz jakiś błąd w danych już wprowadzonych, wciśnij Control+C i rozpocznij proces tworzenia konta od początku. Jeżeli wszystko gra - wciśnięcie enter'a utworzy nowe konto.

Creating new account...

Changing the user information for jellyd
Enter the new value, or press return for the default
        Full Name []: Jeremy
        Room Number []: Smith 130
        Work Phone []:
        Home Phone []:
        Other []:

Wszystkie te informacje są opcjonalne. Nie musisz wprowadzać tu niczego, jeżeli nie masz na to ochoty, zaś użytkownik może zmienić zawarte tu dane w każdej chwili, korzystając z polecenia chfn. Niemniej jednak pomocne może okazać się wprowadzenie chociaż imienia oraz numeru telefonu, w razie gdybyś później musiał skontaktować się z tą osobą.

Changing password for jellyd
Enter the new password (minimum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
Password changed.

Account setup complete.

Teraz musisz wprowadzić hasło dla nowego usera. Generalnie, jeżeli nowy użytkownik nie jest przy tym fizycznie obecny, wpisuje się po prostu standardowe hasło i informuje się go, by zmienił je sobie na coś bardziej bezpiecznego.

Note

Ustalenie hasła: Posiadanie dobrego hasła to pierwszy krok w skutecznej obronie przeciw włamaniom. Z pewnością nie chcesz być posiadaczem hasła łatwego do odgadnięcia, ponieważ takie hasło ułatwiłoby tylko włamanie do twojego systemu. Idealne, bezpieczne hasło będzie przypadkowym ciągiem znaków, zarówno małych jak i dużych liter, cyfr oraz pozostałych znaków alfanumerycznych. (Użycie w haśle znaku tabulacji może nie być zbyt mądrym pomysłem, ale to zależy jeszcze od systemu w którym będziesz się logował). Istnieje wiele programów generujących za ciebie losowe hasła; bardzo łatwo znaleźć je w internecie.

Nie zapomnij o zdrowym rozsądku: nie twórz hasła z daty czyichś urodzin, powszechnie znanej frazy, czegoś znalezionego na biurku bądź czegokolwiek, co jest w łatwy sposób związanego z tobą. Hasło typu “bezpieczne1” bądź też każde inne które zobaczyłeś na papierze albo w internecie także jest złe.

Usuwanie użytkowników także nie należy do trudnych procesów. Wystarczy wywołanie komendy userdel oraz podać jako parametr nazwę konta do usunięcia. Wcześniej należy jeszcze sprawdzić, czy dany użytkownik nie jest zalogowany w systemie, oraz czy nie ma procesów uruchomionych jako ten użytkownik. Poza tym pamiętaj także, iż po usunięciu konta wszystkie informacje na temat hasła użytkownika znikają bezpowrotnie.

# userdel jellyd

Komenda ta usuwa denerwującego użytkownika jellyd z systemu. Nie ma więcej drania! :) Informacje o użytkowniku zostały usunięte z plików /etc/passwd, /etc/shadow oraz /etc/group, niemniej jednak nie został usunięty katalog domowy użytkownika.

Jeżeli za jednym zamachem chcesz usunąć tak użytkownika, jak i jego konto - wydaj takie polecenie:

# userdel -r jellyd

Tymczasowa dezaktywacja konta zostanie opisana w następnym podrozdziale o hasłach, jako że taka czynność pociąga za sobą konieczność zmiany hasła użytkownika. Zmiany innych informacji o kontach opisane są w Sekcja 12.1.3.

Programy dodające i usuwające grupy są bardzo proste. groupadd po prostu dodaje do pliku /etc/group kolejny wpis z unikalnym ID grupy, zaś groupdel usuwa zadaną grupę. W twoich rękach pozostaje edycja pliku /etc/group, by dodawać użytkowników do poszczególnych grup. A teraz, dla przykładu utwórzmy grupę cvs:

# groupadd cvs

...oraz usuńmy ją:

# groupdel cvs

12.1.2 Changing Passwords

Program passwd zmienia hasła poprzez modyfikację pliku /etc/shadow. W pliku tym przechowywane są wszystkie hasła systemu w zakodowanym formacie. By zmienić swoje hasło, wpisz:

% passwd
Changing password for chris
Old password:
Enter the new password (minumum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:

Jak zauważyłeś, zostałeś poproszony o podanie swojego starego hasła. Podczas wpisywania nie pojawi się ono na ekranie, podobnie zresztą jak podczas logowania. Po wpisaniu starego hasła zostaniesz poproszony o podanie nowego. passwd sprawdzi hasło swoimi testami i poinformuje, jeżeli nie przejdzie ono testu jakości. Jeżeli chcesz, możesz zignorować to ostrzeżenie. Zostaniesz poproszony o powtórne wpisanie nowego hasła - tak dla pewności.

Będąc root'em możesz także zmieniać hasła innych użytkowników:

# passwd ted

Przejdziesz wtedy przez taką samą procedurę jak opisana wyżej, za wyjątkiem wpisywania starego hasła (kolejny fajny przywilej posiadania uprawnień root'a...).

Jeżeli zachodzi taka konieczność, to można tymczasowo zablokować konto, oraz uczynić je ponownie dostępnym gdy tylko zechcemy. Blokowanie i odblokowywanie konta następują przy użyciu polecenia passwd. By zablokować konto, jako root wpisz:

# passwd -l david

Spowoduje to zmianę hasła użytkownika na coś, co nigdy nie będzie mogło być dopasowane do żadnej z zakodowanych wartości (parametr "-l" to skrót od ang. locked 'zamknięty' - przyp. tłum.). Konto odblokowuje się poleceniem:

# passwd -u david

Teraz konto david'a działa już normalnie (skrót "-u" powstał od ang. unlocked 'odblokowany' - przyp. tłum.). Założenie blokady na konto może okazać się użyteczne, gdy dany użytkownik nie przestrzega zasad ustalonych przez ciebie, bądź też wysłał zbyt wiele kopii xeyes(1) na twój pulpit...

12.1.3 Modyfikacja danych użytkownika

Są dwie rzeczy, które użytkownicy mogą zmienić w każdej chwili: są to ich powłoka, oraz informacje podawane o nich przez finger. Slackware Linux używa chsh (change shell 'zmień powłokę') oraz chfn (change finger) do modyfikacji tych wartości.

Użytkownik może wybrać sobie każdą powłokę spośród tych wypisanych w pliku /etc/shells. Dla większości osób najodpowiedniejszym shell'em będzie /bin/bash. Niektórzy jednak, będąc przyzwyczajeni do innych powłok używanych na swoich komputerach w pracy bądź w szkole, będą chcieli używać tego co już znają. By zmienić powłokę, należy wpisać chsh:

% chsh
Password:
Changing the login shell for chris
Enter the new value, or press return for the default
        Login Shell [/bin/bash]:

Po wpisaniu hasła podaj pełną ścieżkę dostępu do nowego shell'a. Upewnij się przedtem, że znajduje się on na liście w pliku /etc/shells(5). root może zmienić powłokę każdemu użytkownikowi wywołując chsh z nazwą użytkownika jako parametrem.

Informacje podawane przez finger to dodatkowe informacje o użytkowniku, takie jak imię i nazwisko, numery telefonów oraz pokoju. Mogą być one zmodyfikowane poleceniem chfn; przechodzi się wtedy tą samą procedurę, co przy tworzeniu konta. I jak zwykle, root może zmienić te dodatkowe informacje każdemu użytkownikowi.

Grenlandia 2012