Strona główna » Blog » Jak zmienić użytkownika w Ubuntu: su, sudo i eskalacja uprawnień
Jak zmienić użytkownika w Ubuntu: su, sudo i eskalacja uprawnień
- 9 listopada 2025
- 22:15
- Autor: Adrien Roche
- Zaktualizowano 3 października 2026
- Tutoriale

Wprowadzenie
Zarządzanie wieloma kontami użytkowników i przełączanie się między nimi to podstawa administracji Linuksem. Ubuntu, najpopularniejsza dystrybucja Linuksa na świecie, oferuje kilka sposobów zmiany aktywnego użytkownika, każdy z innymi zastosowaniami i konsekwencjami dla bezpieczeństwa. Znajomość tych mechanizmów pozwala budować wydajne, wielokrotnie współdzielone workflow, bezpieczne operacje administracyjne i właściwe zarządzanie uprawnieniami.
Ten kompletny przewodnik omawia wszystkie metody zmiany użytkownika w Ubuntu: od podstawowych komend po zaawansowane techniki eskalacji uprawnień. Czy zarządzasz systemami współdzielonymi, zadaniami administracyjnymi, czy środowiskami multi-tenant, opanowanie przełączania użytkowników jest kluczem do sprawnego korzystania z Ubuntu.
Zarządzanie użytkownikami w Ubuntu
Typy kont użytkowników
Zwykli użytkownicy: Standardowe konta z ograniczonymi uprawnieniami, ograniczonym dostępem do plików i niemożnością modyfikowania konfiguracji systemu.
Użytkownik root: Superużytkownik z nieograniczonym dostępem do wszystkich zasobów systemu, zdolny do każdej operacji, w tym niebezpiecznych.
Użytkownicy systemowi: Specjalne konta dla usług systemowych (www-data dla serwerów WWW, mysql dla baz danych).
Użytkownicy sudo: Zwykłe konta z delegowanymi uprawnieniami superużytkownika poprzez konfigurację sudo.
Eskalacja uprawnień
Why Escalate?: Most administrative tasks require elevated privileges. Rather than logging in as root (dangerous), Ubuntu uses privilege escalation to grant specific elevated permissions temporarily.
Zasady: Wykonywanie operacji z minimalnie niezbędnymi uprawnieniami; minimalizowanie czasu z podwyższonym dostępem; audytowanie wszystkich uprzywilejowanych operacji.
Polecenie su (Switch User)
Podstawowa składnia
su [OPTIONS] [USERNAME]
Switching to Another Usersu john
Prompts for the target user’s password, then switches to that account. The environment remains the user’s original environment (not recommended).Zmiana użytkownika z nowym środowiskiem
su - john
The hyphen (-) loads the complete environment of the target user, including:
-
Zmienna HOME wskazująca na katalog domowy użytkownika
-
Zmienna PATH ze ścieżkami poleceń użytkownika
-
Pliki konfiguracji shell (.bashrc, .profile)
-
Katalog roboczy zmieniony na home użytkownika
Best Practice: Always use su - to ensure proper environment configuration.
Przełączanie na użytkownika root
su -
Przełącza na użytkownika root z pełnym środowiskiem root. Prosi o hasło root.
Opcje polecenia su
-c (Command): Execute single command as another user without full session
su - john -c "ls -la /home/john"-l (Login): Identical to using hyphen; creates login shell
su --login john
-s (Shell): Określ powłokę dla sesji
su - john -s /bin/zsh
-m (Preserve environment): Keep current environment while switching
su -m johnPolecenie sudo (Superuser Do)
Podstawowa składnia
sudo [OPTIONS] COMMAND
Wykonywanie polecenia z podwyższonymi uprawnieniami
sudo apt-get update # Update package lists (requires root)sudo systemctl restart ssh # Restart SSH servicesudo reboot # Reboot system
Uruchamianie interaktywnej powłoki root
sudo -i
Uruchamia interaktywną powłokę root bez logowania jako root.
Uruchamianie polecenia jako inny użytkownik
sudo -u username commandWykonuje polecenie z uprawnieniami wskazanego użytkownika (nie tylko root).
Opcje polecenia sudo
-l (List): Display allowed commands
sudo -l
-k (Invalidate): Clear sudo credentials (requires password on next use)
sudo -k
-p (Prompt): Custom password prompt
sudo -p "Enter admin password: " apt-get update-v (Validate): Extend sudo timeoutsudo -v
-H (Home): Set HOME to target user’s home
sudo -H -u username commandsu – a su: kluczowe różnice
| Funkcja | su | su – |
|---|---|---|
| Środowisko | Zachowuje środowisko powłoki nadrzędnej | Ładuje środowisko docelowego użytkownika |
| Zmienna HOME | Pozostaje w home oryginalnego użytkownika | Przechodzi do home docelowego użytkownika |
| Zmienna PATH | Może zawierać ścieżki oryginalnego użytkownika | Zawiera standardowe ścieżki docelowego użytkownika |
| Konfiguracja Shell | Nie ładuje .bashrc ani .profile | Ładuje ~/.bashrc, ~/.profile |
| Katalog roboczy | Pozostaje w bieżącym katalogu | Przechodzi do home użytkownika |
| Zalecane | Rzadko; możliwe nieporozumienia | Zawsze przy zmianie użytkownika |
| Poziom ryzyka | Wyższy (mieszane środowiska) | Niższy (czyste środowisko) |
Przykładowa różnica
# Z użyciem su (BAD)
$ su johnPassword:
$ echo $HOME
/root # Still shows original home!
$ pwd
/path/to/original # Still in original directory# Z użyciem su - (GOOD)
$ su - johnPassword:
$ echo $HOME
/home/john # Correct home directory$ pwd
/home/john # Correct directoryPrzełączanie na użytkownika root
Z użyciem su
su -
Password: (enter root password)
root@hostname:~#Z użyciem sudo
sudo -i[sudo] password for john: (enter john's password)
root@hostname:~#Różnice między su – a sudo -i
| Aspekt | su – | sudo -i |
|---|---|---|
| Wymagane hasło | Hasło root | Hasło bieżącego użytkownika |
| Logowanie | Nie zarejestrowane | Zapisywane przez sudo |
| Ślad audytu | Minimalnyny | Pełny ślad audytu |
| Bezpieczeństwo | Niższe (wymaga udostępniania hasła root) | Wyższe (indywidualna odpowiedzialność) |
| Typowa konfiguracja korporacyjna | Odradzane | Recommended |
Security Note: Modern Ubuntu systems typically don’t require root password; instead, sudoers are granted authority through sudo configuration.
Uruchamianie poleceń jako inny użytkownik
Wykonaj pojedyncze polecenie
sudo -u apache /usr/bin/apache2ctl restartsu - testuser -c "python /home/testuser/script.py"
Uruchamianie wielu poleceń
sudo bash -c "echo 'Line 1' > /tmp/file; cat /tmp/file"
Uruchamianie poleceń z zachowaniem bieżącego katalogu
sudo -u john pwd # Prints john's home (working directory changed)sudo -u john -C pwd # Prints current directory (with -C flag)Zmiana hasła użytkownika
Zmień własne hasło
passwdPyta o bieżące hasło, a następnie o nowe hasło (dwukrotnie do potwierdzenia).
Zmień hasło innego użytkownika (wymagane root)
sudo passwd john
Bieżące hasło nie jest wymagane; prosi o nowe hasło (uprawnienia root).
Ustaw zasady wygasania
sudo chage -l john # View password aging infosudo chage -M 90 john # Force password change every 90 dayssudo chage -d 0 john # Force password change on next login
Uprawnienia użytkownika i grupy
Wyświetl grupy użytkowników
groups john # Show groups current user belongs togroups # Show own groupsid john # Detailed UID, GID, groupsDodaj użytkownika do grupy
sudo usermod -aG groupname username
Example: Add user to sudo group
sudo usermod -aG sudo john
Usuń użytkownika z grupy
sudo deluser username groupname
Utwórz nowego użytkownika
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
Options:
-
-m: Create home directory -
-s: Specify shell -
-G: Przypisz do grup
Praktyczne przykłady
Example 1: Administrative Task with Eskalacja uprawnień
#!/bin/bash
# Install software update as regular user with privilege escalation
sudo apt-get updatesudo apt-get upgrade -y
echo "System update complete"
Przykład 2: Uruchamianie zadań serwera WWW
# Stop web server as specific service user
sudo -u www-data /opt/webapp/stop.sh# Check web server permissions as www-data
sudo -u www-data ls -la /var/www/htmlPrzykład 3: Konserwacja bazy danych
# Backup database as specific user
sudo -u mysql mysqldump -u root -p database_name > backup.sql
# Run database optimization
sudo -u mysql mysql -u root -p -e "OPTIMIZE TABLE table_name;"
Przykład 4: Zarządzanie użytkownikami wsadowo
#!/bin/bash# Create multiple usersfor user in user1 user2 user3; dosudo useradd -m -s /bin/bash "$user"echo "Please set password for $user:"sudo passwd "$user"done# Add all to sudo groupfor user in user1 user2 user3; dosudo usermod -aG sudo "$user"doneKwestie bezpieczeństwa
Bezpieczeństwo haseł
Hasło root: Trzymaj bezpiecznie; nigdy nie udostępniaj nieufnym osobom
Konfiguracja sudo: Deleguj określone uprawnienia zamiast pełnego dostępu root
Wygasanie haseł: Wymuszaj okresowe zmiany haseł
# Configure password agingsudo chage -M 90 -m 1 -W 7 username
# Forces change every 90 days, minimum 1 day between changes, 7-day warningAudyt i logowanie
All sudo commands are logged:
sudo grep COMMAND /var/log/auth.log
View detailed sudo history:
sudo journalctl _COMM=sudoRestricting Eskalacja uprawnień
Configure sudoers file safely:
sudo visudo # Always use visudo for editing sudoers
Przykładowa konfiguracja sudoers (limiting what john can run):
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxjohn ALL=(ALL) /usr/bin/apt-getLimit czasu sesji
# Set sudo timeoutsudo -v # Extend timeoutsudo -k # Invalidate sudo credentialsDlaczego infrastruktura zdalna używa przełączania użytkowników
Infrastruktura RDP i SSH często wymaga:
-
Wielu użytkowników administracyjnych z różnymi poziomami uprawnień
-
Konta usług dla zautomatyzowanych procesów
-
Ślady audytu dla zgodności (logowanie sudo)
-
Eskalacja uprawnień dla zadań administracyjnych
Zarządzanie infrastrukturą przez RDP.Monster
Managing Ubuntu systems remotely requires robust, secure access:
Dostęp SSH do wykonywania poleceń
-
Zdalne wykonywanie poleceń przełączania użytkowników
-
Zautomatyzowana administracja przez skrypty
-
Pełna kontrola nad zarządzaniem użytkownikami
Obsługa wielu kont użytkowników
-
Twórz użytkowników administracyjnych
-
Odpowiednio deleguj uprawnienia
-
Utrzymuj ślady audytu
Bezpieczna administracja zdalna
-
Szyfrowanie SSH dla wszystkich operacji przełączania użytkowników
-
Uwierzytelnianie oparte na kluczach dla dostępu programowego
-
Kompleksowe logowanie i monitorowanie
Podsumowanie
Przełączanie użytkowników i eskalacja uprawnień to fundamentalne umiejętności administracji Ubuntu. Zrozumienie różnic między su, sudo i zarządzaniem hasłami umożliwia efektywną administrację systemami wieloużytkownikowymi przy zachowaniu bezpieczeństwa poprzez odpowiednią delegację uprawnień i ślady audytu.
Nowoczesne najlepsze praktyki Ubuntu zdecydowanie preferują sudo zamiast su do eskalacji uprawnień, umożliwiając odpowiedzialność i kompleksowe logowanie przy jednoczesnym minimalizowaniu udostępniania hasła root. Właściwa konfiguracja sudoers delegująca określone uprawnienia zapewnia doskonałą równowagę bezpieczeństwa między użytecznością a dostępem control.
Managing complex Ubuntu infrastructure requiring sophisticated user management and secure administrative access? RDP.Monster provides SSH-based Ubuntu VPS solutions enabling seamless user management and privilege escalation across your infrastructure. Deploy professionally-managed Ubuntu systems today.
Wydajny hosting Ubuntu VPS
Doświadcz pełnej kontroli i szalonej wydajności dzięki naszym VPS-om Linux. Idealne do hostowania aplikacji, zarządzania serwerami i optymalizacji workflow.
Wydajne serwery dedykowane
Potrzebujesz maksymalnej kontroli i mocy? Nasze serwery dedykowane oferują niedoścignioną wydajność do najbardziej wymagających zadań.
Najczęściej zadawane pytania
Co używać: su czy sudo?
Daje rozliczalność, wymaga indywidualnych haseł i zapewnia pełny ślad audytu.
Dlaczego moje polecenie su nie działa?
Try sudo -u username instead if you have sudo privileges.
Czy mogę zmienić użytkownika bez hasła?
W su zawsze potrzebne jest hasło docelowego użytkownika.
Jaka jest różnica między su - a su --login?
Jak długo trzymają się uprawnienia sudo?
Czy mogę uruchomić kilka poleceń jako inny użytkownik?
Jak sprawdzić swoje uprawnienia sudo?
Dlaczego mój PATH zmienia się po przełączeniu użytkownika?
Adrien Roche, Redaktor ds. infrastruktury i hostingu
Inżynier systemowy z ponad 10-letnim doświadczeniem w utrzymaniu flot Windows Server i Linux. Adrien prowadzi dokumentację infrastruktury rdp.monster i pisze nasze poradniki o RDP, hostingu VPS, administracji serwerami, sieciach i narzędziach prywatności.




