Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Linux System operacyjny

Jak zmienić użytkownika w Linux: Kompletny przewodnik

Linux jest systemem operacyjnym wieloużytkownikowym z założenia, a zarządzanie tożsamościami użytkowników jest jedną z najbardziej fundamentalnych umiejętności, które każdy administrator systemu musi opanować. Niezależnie od tego, czy zarządzasz środowiskiem VPS Hosting, konfigurujesz serwer WWW czy rozwiązujesz problemy z uprawnieniami do plików po wdrożeniu, zrozumienie sposobu zmiany użytkownika w Linux jest niezbędne.

Fraza „zmiana użytkownika” w Linux w rzeczywistości obejmuje kilka odrębnych operacji, każda z własnymi narzędziami, zagrożeniami i najlepszymi praktykami:

  • Przełączenie się na inne konto w powłoce (np. z john na root) dla sesji interaktywnej
  • Uruchomienie pojedynczego polecenia jako inny użytkownik bez pełnego przełączania sesji
  • Zmiana użytkownika, na którym działa usługa lub proces — krytyczne dla wzmocnienia bezpieczeństwa
  • Zmiana własności plików i katalogów — niezbędne po migracjach, przywracaniu lub wdrożeniach
  • Modyfikowanie atrybutów konta użytkownika — zmiana nazwy użytkowników, zmiana UID lub dostosowanie członkostwa w grupach

Ten przewodnik obejmuje wszystkie te scenariusze szczegółowo, wyjaśniając, kiedy używać każdego podejścia, jak to zrobić bezpiecznie i jakich błędów unikać — aby móc pewnie zarządzać użytkownikami Linux bez naruszania uprawnień, usług ani dostępu.

Przełączanie się na innego użytkownika (interaktywna powłoka)

Gdy potrzebujesz pełnej interaktywnej sesji terminala jako inny użytkownik — do administracji systemem, testowania zachowania aplikacji na innym koncie lub dostępu do konta usługi — Linux udostępnia dwa główne narzędzia: su i sudo.

Używanie su (Przełączenie użytkownika)

Polecenie su zastępuje twoją bieżącą tożsamość użytkownika inną:

su - username

Flaga - (zapisywana również jako -l lub --login) jest ważna: ładuje kompletne środowisko logowania użytkownika docelowego, w tym jego katalog domowy, PATH, profil powłoki i zmienne środowiskowe. Bez flagi - dziedziczysz większość swojego bieżącego środowiska, co może powodować subtelne i mylące zachowanie — szczególnie podczas uruchamiania skryptów lub usług.

Aby przełączyć się bezpośrednio na root:

su -

> Uwaga bezpieczeństwa: Na wielu nowoczesnych dystrybucjach Linux konto root ma domyślnie wyłączone hasło (szczególnie w systemach opartych na Ubuntu). W takich przypadkach su na root nie powiedzie się, a sudo jest prawidłowym podejściem.

Używanie sudo -i (Preferowane dla powłok root/admin)

sudo -i

To daje ci powłokę logowania root równoważną su -, ale uwierzytelnia się przy użyciu twoich własnych uprawnień sudo zamiast wymagać hasła root. To jest zalecane podejście na większości nowoczesnych dystrybucji, ponieważ:

  • Unika potrzeby udostępniania lub znania hasła root
  • Wszystkie działania są rejestrowane za pośrednictwem ścieżki audytu sudo
  • Respektuje twoją konfigurację sudoers i ograniczenia

Przełączanie się na innego użytkownika z powłoką logowania za pośrednictwem sudo

sudo -iu username

To łączy -i (powłoka logowania) i -u (użytkownik docelowy), dając ci czyste środowisko logowania jako określony użytkownik — bez potrzeby hasła tego użytkownika.

Uruchomienie pojedynczego polecenia jako inny użytkownik

Często nie potrzebujesz pełnej sesji interaktywnej — musisz tylko wykonać jedno polecenie z inną tożsamością. To najczęstszy i najbezpieczniejszy wzorzec eskalacji uprawnień.

Używając sudo -u

sudo -u username whoami
sudo -u postgres psql

Drugi przykład jest niezwykle powszechny w administracji bazami danych — przełączenie się na użytkownika systemu postgres w celu uzyskania dostępu do PostgreSQL bez uwierzytelniania hasłem.

Uruchomienie polecenia ze czystym środowiskiem logowania

sudo -iu username command_here

Zapewnia to, że polecenie zostanie uruchomione ze pełnym środowiskiem użytkownika docelowego, a nie zmiennymi z bieżącej sesji.

Uruchomienie polecenia jako root

sudo systemctl restart nginx

To standardowy wzorzec dla zadań administracyjnych: uruchomienie pojedynczego uprzywilejowanego polecenia bez otwierania powłoki root.

Zmień użytkownika, na którym uruchamiana jest usługa (systemd)

Na praktycznie wszystkich nowoczesnych dystrybucjach Linuksa systemd zarządza usługami. Ze względów bezpieczeństwa każda usługa powinna działać na dedykowanym, nieuprzywilejowanym koncie użytkownika, a nie na koncie root. Uruchamianie usług jako root stanowi znaczące zagrożenie bezpieczeństwa — jeśli usługa zostanie skompromitowana, atakujący uzyska dostęp root do całego systemu.

Jest to szczególnie ważne na Serwerach Dedykowanych i produkcyjnych środowiskach VPS, gdzie może działać wiele usług jednocześnie.

Sprawdź bieżącą konfigurację usługi

systemctl cat myservice.service

Poszukaj dyrektyw User= i Group= w sekcji [Service]:

[Service]
User=www-data
Group=www-data

Zastąp użytkownika usługi (bezpieczna metoda)

Zamiast edytować oryginalny plik jednostki (który może zostać nadpisany podczas aktualizacji pakietu), użyj systemctl edit do utworzenia przesłonięcia drop-in:

sudo systemctl edit myservice.service

Otwiera to edytor, w którym dodajesz:

[Service]
User=myuser
Group=mygroup

Zapisz plik, a następnie zastosuj zmiany:

sudo systemctl daemon-reload
sudo systemctl restart myservice.service

Sprawdź, czy usługa działa na koncie prawidłowego użytkownika

systemctl status myservice.service
ps -eo user,pid,cmd | grep myservice

Sprawdź użytkownika dowolnego uruchomionego procesu

ps -eo user,pid,cmd | grep nginx
ps -p <PID> -o user,group,cmd

> Ważne: Linux nie pozwala na zmianę użytkownika już uruchomionego procesu w miejscu. Musisz ponownie uruchomić proces (lub skonfigurować menedżer usług do uruchomienia go na koncie prawidłowego użytkownika), aby zmiana weszła w życie.

Zmiana właściciela pliku za pomocą chown

Właścicielstwo pliku jest kluczową częścią modelu uprawnień Linux. Po migracjach, wdrożeniach, kopiach zapasowych lub przywracaniu, właścicielstwo może zostać przypisane złemu użytkownikowi — powodując błędy odmowy dostępu, uszkodzone aplikacje internetowe lub niedostępne dane. Polecenie chown jest Twoim głównym narzędziem do naprawy tego problemu.

Jest to typowe zadanie podczas konfigurowania środowisk Shared Web Hosting lub wdrażania aplikacji internetowych na VPS.

Zmiana właściciela pliku

sudo chown username file.txt

Zmiana zarówno właściciela, jak i grupy

sudo chown username:groupname file.txt

Rekurencyjna zmiana właścicielstwa (używaj ostrożnie)

sudo chown -R username:groupname /var/www/site

Flaga -R stosuje zmianę rekurencyjnie do wszystkich plików i podkatalogów. Używaj tego ostrożnie — zastosowanie go do złej ścieżki (np. / lub /etc) może uszkodzić cały system.

Zachowaj dowiązania symboliczne

sudo chown -h username:groupname symlink

Bez -h, chown podąża za dowiązaniami symbolicznymi i zmienia właścicielstwo docelowego pliku, a nie samego dowiązania symbolicznego. Użyj -h gdy chcesz zmienić właścicielstwo dowiązania symbolicznego.

Podgląd właścicielstwa przed wprowadzeniem zmian

W przypadku dużych drzew katalogów zawsze podgląd przed zastosowaniem rekurencyjnego chown:

find /path -maxdepth 2 -printf '%u:%g %pn' | head

To pokazuje bieżącego właściciela i grupę dla dwóch górnych poziomów drzewa katalogów, pozwalając potwierdzić zakres zmiany przed zatwierdzeniem.

Potwierdź Twoją Obecną Tożsamość

Przed wprowadzeniem zmian zawsze sprawdź, kim jesteś i w jakim kontekście pracujesz. Zapobiega to przypadkowym zmianom dokonanym na niewłaściwym koncie.

Sprawdź Bieżącego Użytkownika

whoami

Uzyskaj Pełne Informacje o Tożsamości (Użytkownik, Grupy, UID)

id

Przykładowe wyjście:

uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo),1001(docker)

Sprawdź, Kto Jest Zalogowany w Systemie

who
w

Sprawdź Oryginalnego Użytkownika Podczas Korzystania z sudo

Gdy eskalujesz uprawnienia za pomocą sudo, dwie zmienne środowiskowe są istotne:

echo $USER        # The current effective user (root)
echo $SUDO_USER   # The original user who invoked sudo (e.g., alice)

To rozróżnienie ma znaczenie w skryptach — $SUDO_USER mówi ci, kto faktycznie uruchomił polecenie.

Modyfikuj atrybuty konta użytkownika

Czasami „zmiana użytkownika” oznacza modyfikację samego konta: zmianę nazwy, zmianę UID lub dostosowanie członkostwa w grupach. Są to trwałe, systemowe zmiany, które mogą wpłynąć na logowania, uprawnienia do plików i dostęp do usług.

> Najlepsza praktyka: Przed dokonaniem modyfikacji konta upewnij się, że użytkownik jest wylogowany i żadne procesy nie są uruchomione na tym koncie.

Zmień nazwę użytkownika (Zmień nazwę logowania)

sudo usermod -l newname oldname

Zmienia to nazwę logowania, ale nie zmienia automatycznie nazwy katalogu domowego. Aby również przenieść i zmienić nazwę katalogu domowego:

sudo usermod -d /home/newname -m newname

Jeśli użytkownik ma grupę podstawową o tej samej nazwie co jego stara nazwa użytkownika (co jest domyślne na większości dystrybucji), zaktualizuj również nazwę grupy:

sudo groupmod -n newname oldname

Zmień UID użytkownika

sudo usermod -u 2001 username

> Krytyczne: Po zmianie UID wszystkie pliki wcześniej należące do starego UID będą wyglądać na należące do nieznanego identyfikatora numerycznego. Musisz to naprawić natychmiast:

sudo find / -user oldUID -exec chown -h username {} ;

Zastąp oldUID poprzednim numerycznym UID. Ta komenda przeszukuje cały system plików w poszukiwaniu plików ze starym UID i przypisuje je do nowej nazwy użytkownika.

Dodaj użytkownika do grupy

Najczęstszym przypadkiem użycia jest przyznanie użytkownikowi dostępu sudo:

Debian/Ubuntu:

sudo usermod -aG sudo username

RHEL / AlmaLinux / Rocky Linux:

sudo usermod -aG wheel username

Flaga -a jest krytyczna — dołącza użytkownika do grupy bez usuwania go z istniejących grup. Pominięcie -a zastąpi wszystkie członkostwa w grupach tylko określoną grupą.

Zweryfikuj członkostwo w grupie

id username

Szybki Przewodnik Referencyjny

Oto skonsolidowana referencyjna lista wszystkich operacji przełączania i zarządzania użytkownikami omówionych w tym przewodniku:

ZadaniePolecenie
Przełącz się na innego użytkownika (powłoka logowania)su - username
Przełącz się na innego użytkownika za pośrednictwem sudosudo -iu username
Otwórz powłokę rootsudo -i
Uruchom polecenie jako inny użytkowniksudo -u username command
Uruchom polecenie jako postgressudo -u postgres psql
Sprawdź bieżącego użytkownikawhoami
Sprawdź pełną tożsamość i grupyid
Sprawdź oryginalnego wywołującego sudoecho $SUDO_USER
Zmień właściciela plikusudo chown username file
Zmień właściciela pliku i grupęsudo chown username:group file
Rekurencyjna zmiana własnościsudo chown -R username:group /path
Podgląd własności katalogufind /path -maxdepth 2 -printf '%u:%g %pn'
Zmień użytkownika usługi (systemd)sudo systemctl edit myservice.service
Przeładuj systemd po zmianachsudo systemctl daemon-reload
Sprawdź użytkownika procesu`ps -eo user,pid,cmdgrep service`
Zmień nazwę użytkownikasudo usermod -l newname oldname
Przenieś katalog domowysudo usermod -d /home/newname -m newname
Zmień UIDsudo usermod -u 2001 username
Napraw własność po zmianie UIDsudo find / -user oldUID -exec chown -h username {} ;
Dodaj użytkownika do grupy sudosudo usermod -aG sudo username
Sprawdź członkostwo w grupieid username

Podsumowanie

Zarządzanie użytkownikami w Linux nie jest pojedynczą operacją — to rodzina powiązanych zadań, każde z własnymi narzędziami i implikacjami:

  • Użyj sudo -iu username dla sesji interaktywnych jako inny użytkownik (preferowane zamiast su w nowoczesnych systemach)
  • Użyj sudo -u username command do uruchamiania poszczególnych poleceń z inną tożsamością
  • Użyj systemctl edit aby bezpiecznie zmienić użytkownika, na którym działa usługa systemd
  • Użyj chown aby naprawić własność plików po wdrożeniach, migracjach lub problemach z uprawnieniami
  • Użyj usermod dla stałych zmian konta — zmiana nazwy, zmiany UID i zarządzanie grupami

Zrozumienie tych różnic pomaga uniknąć typowych błędów, takich jak uszkodzenie uprawnień usługi, zablokowanie się z dostępu do plików lub przypadkowe przyznanie nadmiernych uprawnień.

Jeśli prowadzisz infrastrukturę opartą na Linux — czy to serwer WWW, bazę danych, czy niestandardowy stos aplikacji — prawidłowo skonfigurowane środowisko hostingowe znacznie ułatwia zarządzanie użytkownikami. AlexHost oferuje elastyczne Panele Kontrolne VPS i opcje VPS z cPanel, które dają pełny dostęp root wraz z intuicyjnymi interfejsami zarządzania, dzięki czemu możesz zastosować wszystko z tego przewodnika z pewnością.