Come cambiare utente su Ubuntu: su, sudo ed escalation dei privilegi
- 9 novembre 2025
- 22:15
- Tutorial

Introduzione
Gestire più account utente e passare dall'uno all'altro è un aspetto fondamentale dell'amministrazione Linux. Ubuntu, la distribuzione Linux più diffusa al mondo, offre diversi metodi per cambiare utente attivo, ciascuno con casi d'uso e implicazioni di sicurezza specifiche. Capire questi meccanismi consente flussi multi-utente efficienti, operazioni amministrative sicure e una corretta gestione dei privilegi.
Questa guida completa esamina ogni metodo per cambiare utente su Ubuntu, dai semplici approcci da riga di comando alle tecniche avanzate di escalation dei privilegi. Che tu gestisca sistemi condivisi, attività amministrative o ambienti multi-tenant, padroneggiare il cambio utente è essenziale per usare Ubuntu con sicurezza.
Comprendere la gestione utenti di Ubuntu
Tipi di account utente
Utenti regolari: Account standard con privilegi limitati, accesso ai file ristretto e incapacità di modificare la configurazione di sistema.
Utente root: Superutente con accesso illimitato a tutte le risorse di sistema, in grado di eseguire qualsiasi operazione, incluse quelle pericolose.
Utenti di sistema: Account speciali per servizi di sistema (www-data per server web, mysql per database).
Utenti sudo: Account regolari con privilegi di superutente delegati tramite la configurazione di sudo.
Escalation di privilegi
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.
Principi: Eseguire operazioni con i privilegi minimi necessari; ridurre al minimo il tempo con accesso elevato; verificare tutte le operazioni privilegiate.
Comando su (Switch User)
Sintassi di base
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).Cambio utente con nuovo ambiente
su - john
The hyphen (-) loads the complete environment of the target user, including:
-
Variabile HOME che punta alla home directory dell'utente
-
Variabile PATH con i path dei comandi dell'utente
-
File di configurazione della shell (.bashrc, .profile)
-
Directory di lavoro spostata nella home dell'utente
Best Practice: Always use su - to ensure proper environment configuration.
Passare all'utente root
su -
Passa all'utente root con l'ambiente completo di root. Richiede la password di root.
Opzioni del comando 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): Specifica la shell per la sessione
su - john -s /bin/zsh
-m (Preserve environment): Keep current environment while switching
su -m johnComando sudo (Superuser Do)
Sintassi di base
sudo [OPTIONS] COMMAND
Eseguire comandi con privilegi elevati
sudo apt-get update # Update package lists (requires root)sudo systemctl restart ssh # Restart SSH servicesudo reboot # Reboot system
Eseguire una shell root interattiva
sudo -i
Avvia una shell root interattiva senza accedere come root.
Eseguire comando come altro utente
sudo -u username commandEsegue il comando con i privilegi dell'utente specificato (non solo root).
Opzioni del comando 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 – vs su: differenze chiave
| Caratteristica | su | su – |
|---|---|---|
| Ambiente | Mantiene l'ambiente della shell padre | Carica l'ambiente dell'utente di destinazione |
| Variabile HOME | Resta nella home dell'utente originale | Passa alla home dell'utente di destinazione |
| Variabile PATH | Può includere i path dell'utente originale | Contiene i path standard dell'utente di destinazione |
| Config Shell | Non carica .bashrc o .profile | Carica ~/.bashrc, ~/.profile |
| Directory di lavoro | Resta nella directory corrente | Passa alla home dell'utente |
| Raccomandato | Raramente; possibile confusione | Sempre per il cambio utente |
| Livello di rischio | Maggiore (ambienti misti) | Minore (ambiente pulito) |
Differenza di esempio
# Con su (BAD)
$ su johnPassword:
$ echo $HOME
/root # Still shows original home!
$ pwd
/path/to/original # Still in original directory# Con su - (GOOD)
$ su - johnPassword:
$ echo $HOME
/home/john # Correct home directory$ pwd
/home/john # Correct directoryPassare all'utente root
Con su
su -
Password: (enter root password)
root@hostname:~#Con sudo
sudo -i[sudo] password for john: (enter john's password)
root@hostname:~#Differenze tra su – e sudo -i
| Aspetto | su – | sudo -i |
|---|---|---|
| Password richiesta | Password root | Password dell'utente corrente |
| Logging | Non loggato | Registrato da sudo |
| Tracciato di audit | Minimo | Tracciato di audit completo |
| Sicurezza | Inferiore (richiede la condivisione della password di root) | Superiore (responsabilità individuale) |
| Configurazione aziendale tipica | Sconsigliato | Recommended |
Security Note: Modern Ubuntu systems typically don’t require root password; instead, sudoers are granted authority through sudo configuration.
Eseguire comandi come un altro utente
Eseguire un singolo comando
sudo -u apache /usr/bin/apache2ctl restartsu - testuser -c "python /home/testuser/script.py"
Esecuzione di più comandi
sudo bash -c "echo 'Line 1' > /tmp/file; cat /tmp/file"
Esecuzione di comandi preservando la directory corrente
sudo -u john pwd # Prints john's home (working directory changed)sudo -u john -C pwd # Prints current directory (with -C flag)Cambiare la password utente
Cambiare la propria password
passwdRichiede la password attuale, poi la nuova password (due volte per conferma).
Cambiare la password di un altro utente (richiede root)
sudo passwd john
Nessuna password attuale richiesta; richiede la nuova password (autorità root).
Imposta criterio di scadenza
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
Permessi utente e gruppi
Visualizza gruppi utenti
groups john # Show groups current user belongs togroups # Show own groupsid john # Detailed UID, GID, groupsAggiungi utente al gruppo
sudo usermod -aG groupname username
Example: Add user to sudo group
sudo usermod -aG sudo john
Rimuovi utente dal gruppo
sudo deluser username groupname
Crea nuovo utente
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
Options:
-
-m: Create home directory -
-s: Specify shell -
-G: Assegna ai gruppi
Esempi pratici
Example 1: Administrative Task with Escalation di privilegi
#!/bin/bash
# Install software update as regular user with privilege escalation
sudo apt-get updatesudo apt-get upgrade -y
echo "System update complete"
Esempio 2: Esecuzione di attività del server web
# 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/htmlEsempio 3: Manutenzione del database
# 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;"
Esempio 4: Gestione utenti in batch
#!/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"doneConsiderazioni sulla sicurezza
Sicurezza delle password
Password root: Mantieni sicura; non condividere mai con individui non affidabili
Configurazione sudo: Delega privilegi specifici invece dell'accesso root completo
Scadenza password: Imponi modifiche periodiche delle password
# Configure password agingsudo chage -M 90 -m 1 -W 7 username
# Forces change every 90 days, minimum 1 day between changes, 7-day warningAudit e logging
All sudo commands are logged:
sudo grep COMMAND /var/log/auth.log
View detailed sudo history:
sudo journalctl _COMM=sudoRestricting Escalation di privilegi
Configure sudoers file safely:
sudo visudo # Always use visudo for editing sudoers
Configurazione sudoers di esempio (limiting what john can run):
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxjohn ALL=(ALL) /usr/bin/apt-getTimeout di sessione
# Set sudo timeoutsudo -v # Extend timeoutsudo -k # Invalidate sudo credentialsPerché l'infrastruttura remota usa il cambio utente
L'infrastruttura RDP e SSH richiede frequentemente:
-
Più utenti amministrativi con diversi livelli di privilegio
-
Account di servizio per processi automatizzati
-
Tracciati di audit per la conformità (logging sudo)
-
Elevazione dei privilegi per attività amministrative
Gestione dell'infrastruttura tramite RDP.Monster
Managing Ubuntu systems remotely requires robust, secure access:
Accesso SSH per esecuzione comandi
-
Esecuzione remota di comandi di cambio utente
-
Amministrazione automatizzata tramite script
-
Controllo completo sulla gestione utenti
Supporto a più account utente
-
Crea utenti amministrativi
-
Delega i privilegi in modo appropriato
-
Mantieni i tracciati di audit
Amministrazione remota sicura
-
Crittografia SSH per tutte le operazioni di cambio utente
-
Autenticazione basata su chiavi per accesso programmatico
-
Logging e monitoraggio completi
Conclusione
Il cambio utente e l'elevazione dei privilegi sono competenze fondamentali di amministrazione Ubuntu. Comprendere le differenze tra su, sudo e gestione delle password consente un'amministrazione efficace dei sistemi multiutente, mantenendo la sicurezza tramite una corretta delega dei privilegi e tracciati di audit.
Le best practice moderne di Ubuntu favoriscono fortemente sudo rispetto a su per l'elevazione dei privilegi, consentendo responsabilità e logging completo riducendo al minimo la condivisione della password di root. Una corretta configurazione di sudoers che delega privilegi specifici fornisce un eccellente equilibrio di sicurezza tra usabilità e accesso 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.
Hosting VPS Ubuntu potente
Vivi pieno controllo e prestazioni fulminee con i nostri VPS Linux. Perfetti per ospitare applicazioni, gestire server e ottimizzare il tuo workflow.
Server dedicati ad alte prestazioni
Hai bisogno di massimo controllo e potenza? I nostri server dedicati offrono prestazioni senza pari per i carichi più impegnativi.
Domande frequenti
Meglio su o sudo?
Garantisce responsabilità, richiede password individuali e fornisce audit trail completi.
Perché il mio comando su non funziona?
Try sudo -u username instead if you have sudo privileges.
Posso cambiare utente senza password?
Con su serve sempre la password dell'utente di destinazione.
Qual è la differenza tra su - e su --login?
Quanto dura il privilegio sudo?
Posso eseguire più comandi come un altro utente?
Come vedo i miei permessi sudo?
Perché il mio PATH cambia quando cambio utente?
Articoli correlati




