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?