15%

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
02.01.2026
4 +2

Jak zmienić użytkownika w Linux: Kompletny przewodnik

Linux to system operacyjny wielodostępowy z założenia, a zarządzanie tożsamościami użytkowników to jedna 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 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, jako którego działa usługa lub proces — krytyczne dla wzmacniania bezpieczeństwa
  • Zmiana własności plików i katalogów — niezbędna po migracjach, przywracaniu lub wdrożeniach
  • Modyfikacja atrybutów konta użytkownika — zmiana nazwy użytkownika, 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 robić bezpiecznie i jakich błędów unikać — aby móc pewnie zarządzać użytkownikami Linux bez łamania uprawnień, usług czy dostępu.

Spis treści

  1. Przełączenie się na innego użytkownika (interaktywna powłoka)
  2. Uruchomienie pojedynczego polecenia jako inny użytkownik
  3. Zmiana użytkownika, jako którego działa usługa (systemd)
  4. Zmiana własności pliku za pomocą chown
  5. Potwierdzenie bieżącej tożsamości
  6. Modyfikacja atrybutów konta użytkownika
  7. Szybki arkusz referencyjny

Przełączenie 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 (Switch User)

Polecenie su zastępuje 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ść 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 dotycząca bezpieczeństwa: Na wielu nowoczesnych dystrybucjach Linux konto root jest domyślnie wyłączone (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

Daje to powłokę logowania root równoważną su -, ale uwierzytelnia się za pomocą 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 konfigurację sudoers i ograniczenia

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

sudo -iu username

Łączy to -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 jest najczęstszy i najbezpieczniejszy wzorzec eskalacji uprawnień.

Używanie 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 z czystym środowiskiem logowania

sudo -iu username command_here

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

Uruchomienie polecenia jako Root

sudo systemctl restart nginx

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

Zmiana użytkownika, jako którego działa usługa (systemd)

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

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

Sprawdzenie bieżącej konfiguracji usługi

systemctl cat myservice.service

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

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

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

Zamiast edytować oryginalny plik jednostki (który może być nadpisany podczas aktualizacji pakietu), użyj systemctl edit do utworzenia zastąpienia 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

Weryfikacja, że usługa działa jako prawidłowy użytkownik

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

Sprawdzenie 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żera usług do uruchomienia go jako prawidłowy użytkownik), aby zmiana weszła w życie.

Zmiana własności pliku za pomocą chown

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

To jest typowe zadanie podczas konfigurowania środowisk Hostingu Współdzielonego lub wdrażania aplikacji WWW 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łasności (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 niewłaściwej ścieżki (np. / lub /etc) może złamać cały system.

Zachowanie dowiązań symbolicznych

sudo chown -h username:groupname symlink

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

Podgląd własności przed wprowadzeniem zmian

Dla dużych drzew katalogów zawsze podglądaj przed zastosowaniem rekurencyjnego chown:

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

Pokazuje to bieżącego właściciela i grupę dla dwóch pierwszych poziomów drzewa katalogów, pozwalając Ci potwierdzić zakres zmiany przed zatwierdzeniem.

Potwierdzenie bieżącej tożsamości

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

Sprawdzenie bieżącego użytkownika

whoami

Uzyskanie pełnych informacji 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)

Sprawdzenie, kto jest zalogowany w systemie

who
w

Sprawdzenie oryginalnego użytkownika podczas korzystania z sudo

Gdy eskalujesz 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.

Modyfikacja atrybutów konta użytkownika

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

> Najlepsza praktyka: Przed wprowadzeniem modyfikacji konta upewnij się, że użytkownik jest wylogowany i żaden proces nie działa na tym koncie.

Zmiana nazwy użytkownika (zmiana nazwy logowania)

sudo usermod -l newname oldname

Zmienia to nazwę logowania, ale nie automatycznie zmienia 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

Zmiana 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. To polecenie przeszukuje cały system plików w poszukiwaniu plików ze starym UID i przypisuje je do nowej nazwy użytkownika.

Dodanie użytkownika do grupy

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

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

Weryfikacja członkostwa w grupie

id username

Szybki arkusz referencyjny

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

ZadaniePolecenie
Przełączenie się na innego użytkownika (powłoka logowania)su - username
Przełączenie się na innego użytkownika za pośrednictwem sudosudo -iu username
Otwarcie powłoki rootsudo -i
Uruchomienie polecenia jako inny użytkowniksudo -u username command
Uruchomienie polecenia jako postgressudo -u postgres psql
15%

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