Systemy Linux są wieloużytkownikowe, czyli pozwalają na pracę wielu użytkowników. Możemy zatem tworzyć dla nich konta czy grupować ich w grupy.
Jak często bywa, możliwe są dwa warianty konfiguracji: konsolowa i graficzna.
Po co tworzymy konta i grupy?
Konta i grupy użytkowników są ważnym elementem pracy z systemem operacyjnym. Kontem możemy określić wszystkie pliki, zasoby i informacje należące do użytkownika. Grupą - zbiór kont.
Każdy użytkownik powinien mieć swoje konto. Dzięki temu może mieć swój katalog domowy, w nim swoje pliki - i zabezpieczyć je, aby nikt inny nie miał do tego dostępu. W Linuksach jest to ważne też ze względu na to, że wiele użytkowników może jednocześnie korzystać z tego samego systemu. Gdy uruchomimy sobie jakiś program, aby np. liczył dla nas różne warianty cząsteczek walczących z wirusem Covid-19, nie chcemy, aby ktoś nam ten program wyłączył. Gdy każdy użytkownik będzie mieć konto dla siebie, tylko administrator będzie mógł przerwać działanie takiego programu.
Grupy natomiast stosujemy do nadawania uprawnień. W linuksowym systemie plików każdy plik ma jednego właściciela i jedną grupę - cała reszta to inni. Stworzenie grup i dodanie do nich użytkowników pozwala na lepsze określanie, kto co może w systemie zrobić. Część programów używa grup do sprawdzania, czy użytkownik może wykonać daną akcję (np. grupa sudo jest używana przez program sudo do sprawdzenia, czy użytkownik może wykonywać programy w imieniu innych użytkowników, szczególnie - roota).
Całość tego zagadnienia można zawrzeć w haśle niezaprzeczalności. Dzięki utworzonym kontom to, co dana osoba zrobiła w systemie, może być zapisywane (logowane) z dokładnością do milisekund. Wtedy możemy wskazać, kto coś zepsuł, i wyciągnąć z tego konsekwencje. Gdy zaś użytkowników dodamy do grup i przypiszemy potrzebne upoważnienia do zasobów systemu, zajmiemy się autoryzacją użytkownika - sprawdzaniem, czy ma on dostęp do danych zasobów i przydzielaniem mu do nich dostępu. Proces logowania jako taki, czyli sprawdzenia, czy użytkownik podał poprawną nazwę i hasło (lub inne dane), oraz czy może się w ogóle logować, nazwiemy uwierzytelnianiem użytkownika.
Zapamiętaj.
Uwierzytelnianie (ang. authentication)
"Okazanie systemowi komputerowemu dowodu tożsamości";
Przekonanie systemu komputerowego lub programu o tożsamości osoby, która chce z niego skorzystać.
Autoryzacja (ang. authorization)
Uzyskanie dostępu do systemu lub specyficznych usług.
Powiązana z uwierzytelnianiem, ale nie tożsama.
Kim jest ten cały root?
Root jest odpowiednikiem administratora w systemach Windows. Jego unikalnym identyfikatorem (pokazane w dalszej części) jest 0. Użytkownik ten może wykonać wszystkie operacje w systemie, w szczególności usunąć wszystkie foldery, podfoldery i pliki z katalogu głównego / systemu plików, efektywnie niszcząc system operacyjny.
W związku z zagrożeniami, które pojawiają się podczas standardowej pracy, zaleca się, aby używać konta root tylko wtedy, gdy jest ono potrzebne. Taki pomysł realizuje program sudo, który pozwala wykonać dane polecenie w imieniu innego użytkownika, w szczególności - roota.
Konfiguracja w konsoli
Tworzenie użytkowników
Do tworzenia użytkowników używamy polecenia adduser. Istnieje także polecenie useradd, jednak jest ono niskopoziomowe i nie zaleca się bezpośredniego używania go.
Adduser domyślnie tworzy konta w systemie na podstawie domyślnych opcji zawartych w pliku /etc/adduser.conf. Stworzenie takiego użytkownika domyślnie:
- dobierze pierwszy wolny UID dla nowego konta,
- utworzy grupę o takiej samej nazwie, jak tworzone konto, i doda je do tej grupy,
- utworzy katalog domowy i ustawi odpowiednie uprawnienia dostępu,
- skopiuje domyślne pliki ("profil domyślny") z katalogu SKEL (domyślnie
/etc/skel).
Polecenie adduser przemek utworzy konto o nazwie przemek, poprosi o zdefiniowanie jego hasła, a następnie o uzupełnienie szczegółów konta. Domyślną wartością tych informacji jest pusta informacja, którą możemy potwierdzić, wciskając enter. Polecenie wymaga uprawnień roota.

A gdzie są informacje o tym koncie?
Informacja o wszystkich kontach w systemie znajduje się w pliku /etc/passwd.

Każda linijka zawiera siedem pól oddzielonych znakiem :. Na przykładzie wpisu przemek:x:1001:1001:Przemek Jedlikowski,,,:/home/przemek:/bin/bash:
przemek- nazwa użytkownika (konta),x- kiedyś w pliku/etc/passwdprzechowywano hasła (w tym polu), dziś są one przeniesione do pliku/etc/shadowi lepiej chronione (szyfrowane), a literaxoznacza, że właśnie w tym pliku należy to hasło sprawdzić,1001(pierwsze) - UID użytkownika (unikalny identyfikator użytkownika),1001(drugie) - GID domyślnej grupy użytkownika (jej unikalny identyfikator grupy),Przemek Jedlikowski,,,- przy tworzeniu konta mogliśmy podać różne informacje o koncie, to pole je przechowuje,/home/przemek- ścieżka bezwzględna do katalogu domowego użytkownika,/bin/bash- ścieżka bezwzględna do domyślnego programu obsługującego interpreter komend.
Tworzenie grup
Do tworzenia grup używamy polecenia addgroup. Istnieje także polecenie groupadd, jednak jest ono niskopoziomowe i nie zaleca się bezpośredniego używania go.
Polecenie addgroup uczniowie utworzy grupę uczniowie, nie dodając do niej żadnego użytkownika.

Dodawanie użytkowników do grup
Aby dodać użytkownika do grupy, można skorzystać z polecenia usermod.
Użytkownikowi można zdefiniować jedną grupę domyślną i wiele grup dodatkowych.
Zmiana grupy domyślnej odbywa się poleceniem usermod -g GRUPA UŻYTKOWNIK, gdzie GRUPA to nazwa istniejącej już nowej grupy domyślnej, a UŻYTKOWNIK to nazwa istniejącego już użytkownika.
Dodanie użytkownika do grupy dodatkowej odbywa się poleceniem usermod -aG GRUPA UŻYTKOWNIK, gdzie GRUPA to nazwa istniejącej już grupy, a UŻYTKOWNIK to nazwa istniejącego już użytkownika. Można podać wiele nazw grup, oddzielając ich nazwy przecinkiem.
Bardzo ważna informacja: proszę nie zapominać o literceaprzed literąG. Oznacza ona append, czyli dołącz. Zapomnienie o niej ustawi nową listę grup, usuwając poprzednie przypisania użytkownika do grup [ciekawostka: w dokładnie taki sposób kiedyś straciłem uprawnienia roota na ważnym serwerze i musiałem poprosić innego administratora o przywrócenie mi ich].

Kto jest w mojej grupie?
Można sprawdzić, jacy użytkownicy znajdują się w danej grupie. Niestety, domyślnie nie ma polecenia, które by to umożliwiło, ale możemy doinstalować pakiet, który takie polecenie doda - members.
Utworzyłem dodatkowe konto użytkownika o nazwie przemek2 i dodałem je do grupy uczniowie. Polecenie members uczniowie wyświetli listę użytkowników należących do tej grupy.

Konfiguracja graficzna
W preferencjach systemowych / ustawieniach na pewno znajdziemy opcję do zarządzania użytkownikami. W moim przypadku wygląda ona następująco:

Klikając przycisk Add można dodać użytkownika, Delete - usunąć go, a Manage Groups - zarządzać grupami w całym systemie (nie tylko tego użytkownika).


Klikając natomiast w przycisk Advanced settings znajdziemy dodatkowe możliwości konfiguracji konta: informacje kontaktowe, uprawnienia użytkownika czy zaawansowane ustawienia.
W oknie tym możemy także zmienić hasło użytkownika.
Źródła
- opracowanie własne,
man adduser,man 5 passwd,man 5 shadow,- dr inż. Tomasz Surmacz, Uwierzytelnianie i autoryzacja. Bezpieczeństwo systemów i usług informatycznych. Folie wykładu prowadzonego na Wydziale Elektroniki Politechniki Wrocławskiej. Dostęp online: http://dream.ict.pwr.wroc.pl/bsiui/bsiui-www-w3-auth.pdf [ostatni dostęp: 2020-05-20]
Odnośniki do podstawy programowej
Ucząc się tego zagadnienia, realizujesz następujące punkty podstawy programowej:
- podstawa programowa 2017
- EE.08.5.3 stosuje polecenia systemów operacyjnych,
- EE.08.5.6 przestrzega zasad udostępniania i ochrony zasobów lokalnych i sieciowych,
- EE.08.5.9 zarządza kontami i grupami użytkowników;
- podstawa programowa 2019
- DUZ.INF.BSK.1.3 określa pojęcie uwierzytelnienia użytkownika,
- DUZ.INF.BSK.1.4 określa pojęcie niezaprzeczalności danych,
- DUZ.INF.BSK.1.5 określa pojęcie autoryzacji użytkownika,
- DUZ.INF.BSyK.4.1 tworzy konta użytkowników z odpowiednimi uprawnieniami,
- INF.02.3.7.9 zarządza kontami i grupami lokalnymi użytkowników w systemach Windows i Linux,
- INF.02.3.9.4 konfiguruje system operacyjny z poziomu konsoli.
oby to mi funkcjonowało
Bardzo przydatny artykuł pozdrawiam