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
- 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?
Powiązane artykuły




