12.2 Users and Groups, the Hard Way

Oczywiście możliwe jest dodawanie, modyfikacja oraz usuwanie użytkowników bez użycia gotowych skryptów i programów dostarczonych w dystrybucji Slackware. I nie jest to trudne, chociaż po zapoznaniu się z tym procesem stwierdzisz pewnie, że o wiele łatwiej jest posłużyć się w tym przypadku skryptami. Niezależnie jednak od tego ważne jest, by wiedzieć jak przechowywane są informacje o twoim koncie, w przypadku gdyby trzeba było je odzyskać, nie mając pod ręką narzędzi omówionych przed chwilą.

Na początek zajmijmy się dodaniem informacji o nowym użytkowniku do plików: /etc/passwd(5), /etc/shadow(5) oraz /etc/group(5). Plik passwd przechowuje pewne informacje o użytkownikach twojego systemu, ale ich hasła są przechowywane gdzie indziej. Kiedyś hasła znajdowały się właśnie w tym pliku, ale dawno już zarzucono ten sposób ze względów bezpieczeństwa. Plik passwd musi być czytelny dla każdego użytkownika, ale też nikt nie chce by nawet zakodowane hasło było dostępne każdemu, gdyż nie byłoby niemożliwością odkodowanie go. Zamiast tego, zakodowane hasła są przechowywane w pliku shadow, który może być czytany tylko przez root'a, zaś w pliku passwd hasło każdego jest zapisane jako “x”. Plik group stanowi spis wszystkich grup oraz tego, kto do nich należy.

Do bezpiecznej modyfikacji pliku /etc/passwd możesz użyć polecenia vipw, zaś komendy vigr użyj do równie bezpiecznej edycji pliku /etc/group. Użyj vipw -s do bezpiecznej edycji pliku /etc/shadow. (drobne wyjaśnienia odnośnie słowa “bezpieczny” - w tym kontekście oznacza ono, iż nikt inny nie będzie miał możliwości modyfikacji pliku w czasie, gdy edytujesz go ty. Jeżeli jesteś jedynym administratorem w swoim systemie, to najprawdopodobniej jesteś bezpieczny, ale i tak warto wyrabiać w sobie dobre nawyki od samego początku).

Przyjrzyjmy się teraz plikowi /etc/passwd oraz zobaczmy, jak dodać nowego użytkownika. Typowy wpis w passwd wygląda tak:

chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash

Każda linia stanowi wpis odnośnie pojedynczego użytkownika, zaś każde pole każdej linii oddzielone jest od pozostałych dwukropkiem. Polami są login, zakodowane hasło (czyli “x” dla każdego użytkownika w Slackware, odkąd Slackware przechowuje właściwe hasła w pliku shadow), ID użytkownika, ID grupy, opcjonalne informacje fingera (oddzielane przecinkami), katalog domowy oraz powłoka. By dodać nowego użytkownika od ręki, dodaj nową linię na końcu pliku, wpisując odpowiednie informacje.

Informacje które właśnie dodałeś muszą spełniać określone kryteria - inaczej nowy użytkownik może mieć problemy z zalogowaniem się. Po pierwsze, upewnij się że pole z hasłem zawiera x oraz że zarówno login, jak i ID użytkownika są unikalne. Przydziel użytkownika do grupy, albo do 100 (grupa “users” w Slackware), albo do innej zdefiniowanej przez ciebie (użyj numeru grupy, nie jej nazwy). Przydziel użytkownikowi właściwy katalog domowy (który za chwilę utworzysz) oraz powłokę (pamiętaj, musi być ona na liście w pliku /etc/shells).

Teraz zajmiemy się dodaniem odpowiedniego wpisu w pliku /etc/shadow, który jest miejscem przechowywania zakodowanych haseł. Typowa linijka tego pliku wygląda tak:

chris:$1$w9bsw/N9$uwLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::

Ponownie, każda linia dotyczy jednej osoby, zawierając informacje w polach ograniczonych dwukropkami. Pola te to kolejno: login, zakodowane hasło, liczba dni które upłynęły od początku "Epoki" (czyli od 1. stycznia 1970r.) do dnia w którym ostatnio zmieniono hasło, liczba dni po upływie których hasło musi ponownie zostać zmienione, liczba dni przed upływem ważności hasła gdy użytkownik zostanie powiadomiony o tym fakcie, liczba dni po upływie ważności hasła gdy konto zostanie zablokowane, liczba dni od początku "Epoki" po których konto zostanie zablokowane, oraz pole zarezerwowane.

Jak widzicie, większość tych informacji dotyczy czasu ważności konta. Jeżeli nie macie zamiaru tworzyć kont, które wygasną po określonym czasie, to wystarczy wam wypełnić zaledwie kilka pól specjalnymi wartościami. W przeciwnym wypadku potrzeba będzie kilku wyliczeń i podjęcia pewnych decyzji, zanim zdecydujecie się wypełnić te pola. Dla nowego użytkownika w pole z hasłem wpisz przypadkowy ciąg znaków; nie martw się, że hasło będzie nieprawidłowe - i tak zmienisz je za chwilę. Jedyny znak, którego nie możesz użyć w tym zapisie to dwukropek. Pozostaw pole “dni od ostatniej zmiany hasła” puste. W zamian wpisz 0, 99999 oraz 7 tak, jak widać w przykładzie powyżej, resztę pól pozostawiając pustymi.

(Dla tych, którzy myślą że zobaczywszy zakodowaną postać mojego hasła są w stanie włamać się do mojego systemu: śmiało! Jeżeli umiecie złamać to hasło, to znacie hasło do naszego testowego systemu. Taka informacja jest chyba całkiem użyteczna :) )

Wszyscy zwykli użytkownicy w typowym systemie Slackware są członkami grupy “users”. Jeżeli chcesz dodać nową grupę, bądź też dodać użytkownika do większej ilości grup, będziesz musiał zmodyfikować plik /etc/group. Oto przykładowy wpis w tym pliku:

cvs::102:chris,logan,david,root

Kolejne jego pola to nazwa grupy, jej hasło, ID oraz lista członków do niej należących (oddzielonych przecinkami). Tworzenie nowej grupy do proste dodanie nowej linijki z unikalnym ID grupy oraz listą wszystkich użytkowników, którzy mają do niej należeć. Wszyscy użytkownicy dopisani do nowej grupy i zalogowani już w systemie, muszą się wylogować i zalogować ponownie, by zmiany odniosły pożądany efekt.

W tym miejscu dobrym pomysłem będzie użycie poleceń pwck oraz grpck do sprawdzenia, czy zmiany wprowadzone ręcznie przed chwilą są spójne. Jako pierwsze, wydaj komendy pwck -r oraz grpck -r; opcja -r nie służy do wprowadza zmian, wypisuje jedynie zmiany o których dokonanie zostaniesz poproszony, gdy wywołasz te komendy bez parametrów. Możesz użyć tak otrzymanego wyjścia programu by zdecydować, czy zachodzi potrzeba modyfikacji plików bądź uruchomienia pwck lub grpck, czy też można już pozostawić zmodyfikowane pliki bez konieczności wprowadzania poprawek.

W tym miejscu powinieneś też użyć polecenia passwd by przydzielić odpowiednie hasło użytkownikowi. Gdy to już zrobione, użyj komendy mkdir by utworzyć nowy katalog domowy wg lokacji, którą wprowadziłeś do pliku /etc/passwd, oraz polecenia chown do zmiany właściciela tego katalogu na nowego użytkownika.

Usuwanie użytkownika to prosta sprawa usunięcia wszystkich wpisów dotyczących tego użytkownika. Usuń odpowiednie wpisy z plików /etc/passwd oraz /etc/shadow a także usuń login użytkownika ze wszystkich grup w pliku /etc/group. Jeżeli chcesz, możesz też usunąć katalog domowy użytkownika, pliki z pocztą oraz wpisy crontab'a (o ile takowe istnieją).

Usuwanie grup wygląda podobnie: usuń wpis o grupie z pliku /etc/group.

Grenlandia 2012