Tworzenie kont i grup w Linuksie

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.

Tworzenie konta użytkownika.

A gdzie są informacje o tym koncie?

Informacja o wszystkich kontach w systemie znajduje się w pliku /etc/passwd.

Zawartość 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 litera x 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.

Utworzenie grupy uczniowie.

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ą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 literce a 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].
Dodanie użytkownika przemek do grupy uczniowie i wyświetlenie listy grup, do których należy użytkownik przemek.

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.

Lista użytkowników w grupie uczniowie.

Konfiguracja graficzna

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

Lista kont użytkowników.

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).

Utworzona wcześniej grupa uczniowie na liście grup.
Właściwości grupy uczniowie i lista użytkowników do niej należąca / mogąca do niej należeć.

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.

2 myśli nt. „Tworzenie kont i grup w Linuksie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.