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/passwd
przechowywano hasła (w tym polu), dziś są one przeniesione do pliku/etc/shadow
i lepiej chronione (szyfrowane), a literax
oznacza, ż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 litercea
przed 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