Jak dodawać, modyfikować i usuwać użytkownika w systemie Linux?

Zarządzanie kontami użytkowników stanowi kluczowy element rutynowej pracy każdego administratora systemu, niezależnie od używanego systemu operacyjnego.

W środowisku opartym na systemie Linux, te działania najczęściej obejmują tworzenie nowych kont, edycję istniejących (np. modyfikacja katalogu domowego, zmiana powłoki systemowej), blokowanie i odblokowywanie wybranych kont, a także ich całkowite usuwanie.

Przed omówieniem konkretnych poleceń i metod realizacji tych zadań, warto rzucić okiem na klasyfikację kont użytkowników w Linuxie. Należy również zaznaczyć, że przedstawione polecenia, o ile nie zostanie to inaczej określone, są skuteczne w większości popularnych dystrybucji systemu Linux.

Rodzaje użytkowników

Użytkownik root (administrator)

Użytkownik root to administrator systemu, który ma pełnię praw do wykonywania wszelkich operacji. Zazwyczaj, tylko konto root może instalować, odinstalowywać lub aktualizować kluczowe komponenty systemu i biblioteki. Jest to jedyne konto o uprawnieniach obejmujących cały system.

Dlatego użytkownik root dysponuje najwyższymi uprawnieniami w systemie.

Użytkownicy specjalni

Są to konta, które nie służą do bezpośredniego logowania. Nie mają one uprawnień takich jak użytkownik root. Ich zadania są wyspecjalizowane i zależą od konkretnego konta.

Konta te powstają automatycznie w momencie instalacji różnych aplikacji. Przykładowo: bin, sync, lp, mail, operator, squid to tylko niektóre z nich.

Użytkownicy zwykli

Użytkownicy standardowi posiadają pełne prawa jedynie w obrębie swojego katalogu roboczego, którym jest zazwyczaj ich katalog domowy. Nie mają oni możliwości zarządzania systemem ani instalowania oprogramowania. Te działania mogą wykonywać jedynie po uzyskaniu specjalnych uprawnień za pomocą narzędzia sudo.

Dodawanie użytkownika

Debian/Ubuntu

W systemach bazujących na Debianie lub Ubuntu istnieje kilka metod dodawania użytkowników za pomocą interfejsu linii poleceń (CLI). Pierwsza z nich to polecenie `adduser`, które jest w istocie skryptem w Perlu, a pod spodem korzysta z polecenia `useradd`, które omówimy za chwilę.

Dodanie użytkownika wymaga uprawnień administratora, stąd konieczność użycia `sudo` na początku polecenia i podania nazwy użytkownika jako argumentu. Pozostałe dane można podać zgodnie z instrukcjami wyświetlanymi na ekranie. Z wyjątkiem nazwy użytkownika i hasła, pozostałe szczegóły są opcjonalne. Utworzenie konta można zweryfikować za pomocą polecenia `id`.

$ sudo adduser johndoe
Adding user `johndoe' ...
Adding new group `johndoe' (1003) ...
Adding new user `johndoe' (1003) with group `johndoe' ...
Creating home directory `/home/johndoe' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for johndoe
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
$
$ id johndoe
uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe)
$

CentOS/RHEL/Fedora (oraz Debian/Ubuntu)

Kolejne polecenie, `useradd`, jest dedykowane dla dystrybucji opartych na RHEL, jednak działa równie dobrze na systemach Ubuntu/Debian. Najprostsza forma tego polecenia (bez dodatkowych parametrów) do utworzenia nowego użytkownika wygląda tak:

$ sudo useradd <nazwa_użytkownika>

Przykład:

$ sudo useradd janedoe

Polecenie `useradd` oferuje liczne opcje, które można wykorzystać podczas tworzenia użytkownika, najczęściej spotykane to UID (identyfikator użytkownika), GID (identyfikator grupy), domyślna powłoka i katalog domowy. Poniżej przedstawiono przykład z wykorzystaniem niektórych z tych opcji:

$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

Możliwość weryfikacji utworzonego użytkownika daje polecenie `id`:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Modyfikacja użytkownika

Często zachodzi potrzeba modyfikacji właściwości istniejących kont użytkowników, wynikająca z wymogów organizacyjnych, próśb użytkowników lub migracji systemów. Większość tych ustawień można łatwo zmienić, jednak należy zwrócić uwagę na potencjalny wpływ tych zmian na środowisko pracy użytkownika i jego dostęp do plików.

Domyślna powłoka

Domyślna powłoka to interfejs wiersza poleceń, który jest uruchamiany podczas rozpoczęcia nowej sesji, zarówno lokalnie, jak i przez SSH. W większości nowoczesnych systemów domyślnie ustawiany jest Bash, choć może to zależeć od dystrybucji systemu Linux lub indywidualnych preferencji użytkownika. Aby zmienić powłokę użytkownika, użyj:

$ sudo usermod -s <powłoka> <nazwa_użytkownika>

Przykład:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/sh
$ sudo usermod -s /bin/bash janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$

Powyższy wynik pokazuje, że powłoka użytkownika janedoe została zmieniona z `/bin/sh` na `/bin/bash`.

Katalog domowy

Podobnie jak domyślną powłokę, lokalizację katalogu domowego użytkownika można zmienić za pomocą:

$ sudo usermod -d <nowa_ścieżka_katalogu> <nazwa_użytkownika>

W poniższym przykładzie katalog domowy użytkownika janedoe został zmieniony na `/data/janedoe`:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$ sudo usermod -d /data/janedoe janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$

Przed wykonaniem zmiany, upewnij się, że nowy katalog ma odpowiednie uprawnienia własności. Brak prawidłowych uprawnień może prowadzić do problemów podczas logowania się lub pracy w nowym katalogu.

Identyfikator użytkownika (UID)

Identyfikator istniejącego użytkownika można zmienić za pomocą:

$ sudo usermod -u <nowy_uid> <nazwa_użytkownika>

Przykład:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -u 1010 janedoe
$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$

Ponowna zmiana UID wpływa na sposób, w jaki system Linux identyfikuje własność i uprawnienia do plików i katalogów. Po zmianie, upewnij się, że katalog domowy użytkownika, jego zawartość, a także wszystkie inne pliki należące do niego (ze starym UID), mają ustawiony nowy UID. W przeciwnym wypadku użytkownik może napotkać problemy z dostępem do plików i podczas pracy w CLI.

Grupa domyślna

Grupa domyślna to zazwyczaj grupa, do której użytkownik jest przypisywany podczas tworzenia konta, chyba że zdefiniowano inną. Linux pozwala także modyfikować domyślną grupę za pomocą polecenia `usermod`. Składnia jest następująca:

$ sudo usermod -g <nowy_gid_lub_nazwa_grupy> <nazwa_użytkownika>

Przykład:

$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$ sudo usermod -g 1001 janedoe
$ getent passwd janedoe
janedoe:x:1010:1001::/data/janedoe:/bin/bash
$

Także w tym przypadku, trzeba się upewnić, że nowy identyfikator grupy jest poprawnie ustawiony w katalogu domowym użytkownika, jego zawartości oraz we wszystkich plikach i katalogach, do których odnosiły się poprzednie uprawnienia.

Dodawanie/usuwanie grup

Oprócz grupy domyślnej, użytkownik może należeć do wielu grup drugorzędnych. W każdej chwili możemy dodać lub usunąć grupy, do których należy użytkownik, za pomocą polecenia `usermod`.

$ sudo usermod -a -G <id_grupy_lub_nazwa_grupy> <nazwa_użytkownika>

Przykład:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -a -G docker janedoe
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$

Analogicznie, aby usunąć użytkownika z jednej z grup drugorzędnych, użyj polecenia `gpasswd`, jak pokazano poniżej:

$ sudo gpasswd -d <nazwa_użytkownika> <nazwa_grupy>

Przykład:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$ sudo gpasswd -d janedoe docker
Removing user janedoe from group docker
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Komentarz GECOS

Pole GECOS w pliku `/etc/passwd` zawiera dodatkowe informacje o użytkowniku lub komentarz. Możemy zmodyfikować te dane dla istniejącego użytkownika za pomocą:

$ sudo usermod -c <komentarz> <nazwa_użytkownika>

Przykład:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -c "Jane Doe - System Admin" janedoe
$ getent passwd janedoe
janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash
$

Pamiętaj, że jeśli komentarz zawiera spacje, należy umieścić cały tekst w cudzysłowie, tak jak w powyższym przykładzie.

Nazwa użytkownika

Nazwę użytkownika można zmienić za pomocą polecenia `usermod` z flagą `-l`:

$ sudo usermod -l <nowa_nazwa_użytkownika> <stara_nazwa_użytkownika>

Przykład:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -l jane_doe janedoe
$ id jane_doe
uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe)
$

Należy pamiętać, aby zaktualizować referencje użytkownika zgodnie z nową nazwą, wszędzie tam, gdzie jest ona używana. Nawet w poleceniach takich jak `id`, należy podać nową nazwę.

Usuwanie użytkownika

Użytkownika można usunąć z systemu Linux za pomocą polecenia `userdel`.

$ sudo userdel <nazwa_użytkownika>

Przykład:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo userdel janedoe
$ id janedoe
id: ‘janedoe’: no such user
$

Aby usunąć użytkownika wraz z jego katalogiem domowym i pocztą, dodaj flagę `-r`.

$ sudo userdel -r <nazwa_użytkownika>

Szczególnie w systemach opartych na Ubuntu można również użyć polecenia `deluser` do usunięcia użytkownika:

$ sudo deluser <nazwa_użytkownika>

Analogicznie, aby usunąć katalog domowy i pocztę, użyj:

$ sudo deluser --remove-home <nazwa_użytkownika>

Szczegółowe informacje i inne dostępne opcje można znaleźć na stronach pomocy (man) poszczególnych poleceń, używając:

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

Podsumowanie

Ten artykuł przedstawia różne aspekty zarządzania użytkownikami w systemie Linux. Omówiono w nim klasyfikację użytkowników, metody ich dodawania i usuwania. Poruszono również temat modyfikacji ustawień kont istniejących użytkowników. Chociaż nie wyczerpuje on tematu, obejmuje wiele podstawowych zadań administracyjnych, które administratorzy systemu spotykają w swojej codziennej pracy.

Możesz być również zainteresowany lekturą artykułu: Jak usuwać pliki i katalogi w Linuksie?


newsblog.pl