Jump to content

su (Italiano)

From ArchWiki

Stato della traduzioneQuesto articolo è la versione tradotta di Su. Data dell'ultima traduzione: 2026-02-28. Se ci sono cambiamenti nella versione inglese, è possibile dare una mano a sincronizzarne la traduzione.

La core utility su (substitute user) viene usata per assumere l'identità di un altro utente sul sistema, root per impostazione predefinita.

Consultare PAM per le modalità di configurazione del comportamento di su.

Installazione

su fa parte del pacchetto util-linux.

Suggerimento sudo-rs fornisce su-rs(1), un'implementazione di su alternativa e sicura per la memoria.

Uso

Per assumere l'identità di un altro utente, passare a su il nome utente che si desidera diventare:

$ su nomeutente

Per impostazione predefinita, quando eseguito come utente regolare, verrà richiesta la password dell'utente che si sta tentando di diventare. Quando si esegue su come root, non è richiesta alcuna password.

Se non viene passato alcun nome utente, su assume che si voglia diventare utente root e la password richiesta sarà quella di root.

Per ulteriori informazioni, si veda su(1).

Suggerimenti e trucchi

Shell di login

Il comportamento predefinito di su è di rimanere all'interno della directory corrente e di mantenere le variabili d'ambiente dell'utente originale (anziché passare a quelle del nuovo utente).

Si notino le seguenti importanti considerazioni contrastanti:

  • A volte può essere vantaggioso per un amministratore di sistema utilizzare l'account shell di un utente ordinario piuttosto che il proprio. In particolare, occasionalmente il modo più efficiente per risolvere il problema di un utente è accedere all'account di quell'utente per riprodurre o sottoporre a debug il problema.
  • Tuttavia, in molte situazioni non è auspicabile, o può persino essere pericoloso, che l'utente root operi dall'account shell di un utente ordinario e con le variabili ambientali di quell'account piuttosto che dalle proprie. Mentre utilizza inavvertitamente l'account shell di un utente ordinario, root potrebbe installare un programma o apportare altre modifiche al sistema che non avrebbero lo stesso risultato se effettuate utilizzando l'account root. Ad esempio, potrebbe essere installato un programma che potrebbe dare all'utente ordinario il potere di danneggiare accidentalmente il sistema o ottenere l'accesso non autorizzato a determinati dati.

Pertanto, si consiglia agli utenti amministrativi, così come a qualsiasi altro utente autorizzato a usare su (e si suggerisce che ce ne siano pochissimi, se non nessuno), di acquisire l'abitudine di eseguire sempre il comando su con l'opzione -l/--login. Questa ha due effetti:

  1. Passa dalla directory corrente alla home directory del nuovo utente (ad esempio, a /root nel caso dell'utente root) effettuando il login come quell'utente.
  2. Cambia le variabili ambientali con quelle del nuovo utente, come dettato dalle impostazioni della sua shell preferita. Come il loro ~/.bashrc, e possibilmente altri file "dot", per una shell bash. Cioè, la directory corrente e l'ambiente verranno modificati in ciò che ci si aspetterebbe se il nuovo utente avesse effettivamente effettuato l'accesso a una nuova sessione (piuttosto che limitarsi a subentrare in una sessione esistente).

Pertanto gli amministratori dovrebbero generalmente usare su come segue:

$ su -l

Un risultato identico si ottiene aggiungendo il nome utente root:

$ su -l root

Lo stesso può essere fatto per qualsiasi altro utente (ad esempio per un utente di nome archie):

su -l archie

Per accedere a un utente senza password, accedere prima come root e poi accedere all'account utente senza password dalla shell di root:

$ su -l
# runuser -l archie
Nota Non c'è bisogno di usare su quando si è già privilegiati. runuser in questi casi è una scelta migliore che evita un altro livello di processo setuid. Per i dettagli, fare riferimento a su(1).
Suggerimento
  • A volte si incontrerà su usato per ottenere una shell di login con su -, invece di su -l/su --login. Questa abbreviazione è sconsigliata perché l'opzione - può incontrare limitazioni di parsing, vedere su(1) § DESCRIPTION.
  • Potrebbe essere utile aggiungere un alias in ~/.bashrc:
    alias su="su -l"

su e wheel

Il comando su di BSD consente solo ai membri del gruppo utente wheel di assumere l'identità di root per impostazione predefinita. Questo non è il comportamento predefinito di GNU su, ma può essere imitato usando PAM. Decommentare la riga appropriata in /etc/pam.d/su e /etc/pam.d/su-l:

auth required pam_wheel.so use_uid

Utenti nologin

Non è possibile eseguire comandi come un altro utente semplicemente usando su utente -c comando se non è loro permesso il login (ovvero hanno /bin/false o /usr/bin/nologin impostato come shell).

È possibile aggirare il problema specificando la shell da utilizzare:

su -s /usr/bin/bash utente_nologin