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

Zarządzanie użytkownikami w dowolnym systemie operacyjnym to jedno z podstawowych rutynowych zadań administratora systemu.

W przypadku systemu operacyjnego opartego na Linuksie zwykle obejmuje tworzenie kont użytkowników, modyfikowanie istniejących kont, takie jak zmiana ich katalogu domowego, domyślnej powłoki, blokowanie/odblokowywanie jednego lub więcej kont i usuwanie kont użytkowników.

Zanim zbadamy polecenia i procesy służące do wykonania tych zadań, przyjrzyjmy się pokrótce, jak można sklasyfikować konta użytkowników w systemie Linux. Należy również zauważyć, że o ile nie zostanie to wyraźnie określone, podane polecenia będą działać w większości popularnych dystrybucji Linuksa.

Typy użytkowników

Użytkownik główny

Użytkownik root jest administratorem systemu operacyjnego ze wszystkimi uprawnieniami do wykonywania operacji. Zwykle tylko root może instalować/odinstalowywać lub aktualizować podstawowe programy systemowe i biblioteki. Jest to jedyne konto użytkownika z uprawnieniami ogólnosystemowymi.

Tak więc użytkownik root jest najpotężniejszym użytkownikiem systemu.

Użytkownik specjalny

To są użytkownicy bez logowania. Nie mają wszystkich uprawnień użytkownika root. W zależności od konta pełnią różne wyspecjalizowane role.

Są one tworzone automatycznie w momencie instalacji dowolnej aplikacji. bin, sync, lp, mail, operator, squid to tylko niektóre z przykładów specjalnych użytkowników.

Zwykli użytkownicy

Zwykli użytkownicy mają pełne uprawnienia tylko w swoim katalogu roboczym, zwykle w katalogu domowym. Nie mają uprawnień do zarządzania systemem ani instalowania oprogramowania. Nie mogą wykonywać tych zadań bez specjalnych uprawnień poprzez sudo.

Dodawanie użytkownika

Debian/Ubuntu

W systemie opartym na Debianie lub Ubuntu istnieje kilka opcji dodawania użytkowników z CLI. Pierwsze polecenie to adduser, które jest skryptem Perla i używa polecenia useradd w zapleczu, którego użycie zobaczymy później.

Ponieważ dodanie użytkownika jest zadaniem uprzywilejowanym, musisz użyć sudo jako prefiksu i nazwy użytkownika jako argumentu. Inne szczegóły można określić zgodnie z monitem. Z wyjątkiem nazwy użytkownika i hasła, pozostałe szczegóły są opcjonalne. Możemy zweryfikować, czy użytkownik został utworzony 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 (w tym Debian/Ubuntu)

Następne polecenie, useradd, będzie działać w dystrybucjach systemu operacyjnego opartych na RHEL, a także działa równie dobrze na hostach Ubuntu/Debian. Najprostsza składnia (bez dodatkowych opcji) tworzenia nowego użytkownika to:

$ sudo useradd <username>

Przykład:

$ sudo useradd janedoe

Polecenie useradd obsługuje wiele opcji, które można określić podczas tworzenia użytkownika, najczęściej są to identyfikator użytkownika (UID), identyfikator grupy (GID), domyślna powłoka i katalog domowy itp. Jeden z takich przykładów podano poniżej:

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

Możesz zweryfikować nowo utworzonego użytkownika za pomocą polecenia id:

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

Modyfikowanie użytkownika

Często trzeba zmodyfikować niektóre właściwości istniejących użytkowników w oparciu o wymagania organizacji, żądania użytkowników lub migracje systemu. Większość z tych właściwości można łatwo zmodyfikować, ale musimy upewnić się, jak wpłynie to na środowisko użytkownika i dostęp do plików będących własnością użytkownika lub do których użytkownik ma dostęp.

Domyślna powłoka

Domyślną powłoką jest powłoka CLI tworzona, gdy użytkownik uruchamia nową sesję CLI lokalnie lub przez SSH. Większość nowoczesnych systemów ma domyślny Bash użytkownika, chociaż może się on różnić w zależności od dystrybucji Linuksa lub środowiska użytkownika. Aby zmodyfikować domyślną powłokę użytkownika, użyj:

$ sudo usermod -s <shell> <username>

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
$

Jak widać na powyższym wyjściu, powłoka została zmieniona z /bin/sh na /bin/bash dla użytkownika janedoe.

Katalog domowy

Podobnie jak domyślna powłoka, katalog domowy użytkownika może zostać zmodyfikowany do innej lokalizacji za pomocą:

$ sudo usermod -d <new_directory_path> <username>

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 dokonaniem przełączenia upewnij się, że nowy katalog ma odpowiednie prawa własności i uprawnienia. W przeciwnym razie użytkownik może napotkać problemy podczas logowania lub pracy w nowym katalogu domowym.

Identyfikator użytkownika

Możesz zmienić identyfikator istniejącego użytkownika za pomocą:

$ sudo usermod -u <new_uid> <username>

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
$

Ponownie, zmiana UID zmienia sposób, w jaki system plików Linux mapuje własność i uprawnienia do pliku lub katalogu. Upewnij się, że katalog osobisty użytkownika i jego zawartość oraz wszystkie inne pliki w dowolnym miejscu w systemie, pierwotnie należące do użytkownika (ze starym UID), zostały zmienione na odwzorowane UID. Niewykonanie tego może spowodować problemy w sesji CLI i dostępie do plików przez użytkownika.

Grupa domyślna

Grupa domyślna to zazwyczaj domyślny identyfikator grupy użytkownika, który jest tworzony podczas tworzenia użytkownika, chyba że określono inny identyfikator GID. Linux pozwala również modyfikować domyślną grupę użytkownika za pomocą polecenia usermod. Oto składnia do użycia:

$ sudo usermod -g <new_gid or group_name> <username>

Oto jeden 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
$

Ponownie upewnij się, że nowy identyfikator grupy jest ustawiony w katalogu domowym użytkownika, zawartości i wszystkich innych plikach lub katalogach mających zastosowanie do prawidłowej migracji ich uprawnień własności.

Dodawanie/usuwanie grup

Oprócz grupy domyślnej użytkownik w systemie Linux może należeć do grup drugorzędnych. Zawsze możemy dodać lub usunąć dodatkowe grupy, do których należy użytkownik za pomocą polecenia usermod.

$ sudo usermod -a -G <group_id or group_name> <username>

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

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

$ sudo gpasswd -d <username> <groupname>

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 /etc/passwd zawiera informacje lub komentarz użytkownika. Możemy zmodyfikować te informacje dla istniejącego użytkownika jako:

$ sudo usermod -c <comment> <username>

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 Twój komentarz lub dane użytkownika zawierają spacje, umieść to pole w cudzysłowie, tak jak w powyższym przykładzie.

Nazwa użytkownika

Nazwę użytkownika można również zmienić za pomocą polecenia usermod za pomocą flagi -l:

$ sudo usermod -l <new_username> <old_username>

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

Pamiętaj, aby zaktualizować referencje użytkownika zgodnie z nową nazwą, gdziekolwiek jest używana. Nawet w poleceniach takich jak id, nowa nazwa użytkownika powinna być określona.

Usuwanie użytkownika

Użytkownik może zostać usunięty z Linuksa za pomocą polecenia userdel.

$ sudo userdel <username>

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 buforem poczty, dodaj również flagę -r.

$ sudo userdel -r <username>

W szczególności w przypadku systemów opartych na Ubuntu możesz także użyć polecenia deluser, aby usunąć użytkownika:

$ sudo deluser <username>

Podobnie, aby usunąć katalog domowy i bufor poczty, użyj:

$ sudo deluser --remove-home <username>

Szczegółowe informacje i inne obsługiwane opcje można znaleźć na stronie głównej różnych poleceń, używając:

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

Wniosek

W tym artykule przedstawiono różne aspekty zarządzania użytkownikami w systemie Linux. Obejmuje to wyjaśnienie różnych kategorii użytkowników oraz sposobów ich dodawania i usuwania. Obejmuje również różne opcje, które pomagają modyfikować parametry istniejącego użytkownika. Chociaż nie obejmuje wszystkich możliwości obsługiwanych przez różne polecenia, obejmuje wiele typowych zadań administracyjnych, które administrator systemu napotka w codziennej pracy.

Możesz być również zainteresowany przeczytaniem: Jak usunąć pliki i katalogi w Linuksie?