su (Italiano)
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.
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:
- Passa dalla directory corrente alla home directory del nuovo utente (ad esempio, a
/rootnel caso dell'utente root) effettuando il login come quell'utente. - 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
- A volte si incontrerà su usato per ottenere una shell di login con
su -, invece disu -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