SU
Section: Comandi utente (1)
Updated: 29/04/2018
Page Index
NOME
su - cambia ID utente o diventa amministratore
SINOSSI
-
su [opzioni] [-] [nome [ args ]]
DESCRIZIONE
The
su
command is used to become another user during a login session. Invoked without a
username,
su
defaults to becoming the superuser. The
-
option may be used to provide an environment similar to what the user would expect had the user logged in directly. The
-c
option may be used to treat the next argument as a command by most shells.
Options are recognized everywhere in the argument list. You can use the
--
argument to stop option parsing. The
-
option is special: it is also recognized after
--, but has to be placed before
username.
All'utente viene quindi chiesta la password, se necessario. Una password errata viene segnalata da un messaggio d'errore. Viene effettuato il log di tutti i tentativi, siano essi riusciti o meno, al fine di rilevare ogni abuso del sistema.
Le variabili d'ambiente in uso vengono passate alla nuova shell, eccetto il valore di
$PATH
che viene impostato a
/bin:/usr/bin
per gli utenti qualsiasi e a
/sbin:/bin:/usr/sbin:/usr/bin
per l'amministratore. Questa impostazione è controllata dalle definizioni
ENV_PATH
ed
ENV_SUPATH
in
/etc/login.defs.
Un sottosistema di login è indicato dalla presenza del carattere «*» all'inizio della shell di login. La directory home impostata sarà utilizzata come root di un nuovo file system al quale l'utente accede.
OPZIONI
Il comando
su
accetta le seguenti opzioni:
-c, --command COMANDO
-
Specifica un comando che verrà invocato dalla shell tramite la sua opzione
-c.
The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.
-, -l, --login
-
Fornisce un ambiente simile a quello che un utente si attende quando effettua direttamente il login.
When
-
is used, it must be specified before any
username. For portability it is recommended to use it as last option, before any
username. The other forms (-l
and
--login) do not have this restriction.
-s, --shell SHELL
-
La shell che verrà invocata.
La shell invocata viene scelta da (in ordine di priorità):
-
La shell specificata con --shell.
-
Se viene usato
--preserve-environment, la shell specificata dalla variabile d'ambiente
$SHELL.
-
La shell indicata nel file
/etc/passwd
per l'utente target.
-
/bin/sh
se gli altri metodi falliscono.
Se l'utente target ha una shell con restrizioni (cioè se la sua shell presente in
/etc/passwd
non è presente in
/etc/shells), allora l'opzione
--shell
e la variabile d'ambiente
$SHELL
non vengono prese in considerazione a meno che
su
sia invocato da root.
-m, -p, --preserve-environment
-
Mantiene l'ambiente attuale, fatta eccezione per:
$PATH
-
reimpostato in accordo alle opzioni
ENV_PATH
o
ENV_SUPATH
del file
/etc/login.defs
(vedi sotto);
$IFS
-
reimpostato a
«<space><tab><newline>»
se era impostato.
Se l'utente target ha una shell con restrizioni, questa opzione non ha effetto (a meno che
su
sia invocato da root).
Notare che il comportamento predefinito per l'ambiente è il seguente:
-
Le variabili d'ambiente
$HOME,
$SHELL,
$USER,
$LOGNAME,
$PATH
e
$IFS
sono reimpostate.
-
Se l'opzione
--login
non è usata, l'ambiente è copiato con l'eccezione delle variabili elencate sopra.
-
Se l'opzione
--login
è utilizzata, le variabili
$TERM,
$COLORTERM,
$DISPLAY
e
$XAUTHORITY
sono copiate se risultano impostate.
-
Se l'opzione
--login
è utilizzata, le variabili d'ambiente
$TZ,
$HZ
e
$MAIL
sono impostate in accordo alle opzioni
ENV_TZ,
ENV_HZ,
MAIL_DIR
e
MAIL_FILE
specificate nel file
/etc/login.defs
(vedi sotto).
-
Se l'opzione
--login
è utilizzata, altre variabili d'ambiente potrebbero essere impostate dal file
ENVIRON_FILE
(vedi sotto).
AVVISI/CAVEAT
Questa versione di
su
ha molte opzioni di compilazione; solo una parte di esse potrebbe essere in uso su un determinato sistema.
CONFIGURAZIONE
Le seguenti variabili di configurazione in
/etc/login.defs
cambiano il comportamento di questo strumento:
CONSOLE (testo)
-
Se definito, o il percorso completo di un file che contiene l'elenco di nomi di device (uno per riga) oppure un elenco di nomi di device separati da «:». L'accesso come root verrà permesso solo attraverso questi device.
Se non definito, root potrà accedere da qualsiasi device.
Il nome di device deve essere specificato senza il prefisso /dev.
CONSOLE_GROUPS (testo)
-
Elenco di gruppi da aggiungere ai gruppi supplementari dell'utente quando questi accede dalla console (come determinato dalla impostazione CONSOLE). Il valore predefinito è nullo.
Usare con cautela - è possibile che gli utenti ottengano l'accesso permanente a questi gruppi anche se non accedono dalla console.
DEFAULT_HOME (booleano)
-
Indica se permettere l'accesso al sistema anche se non si può accedere alla directory home. Il valore predefinito è no.
Se impostato a
yes, l'utente accederà alla directory root (/) nel caso che non sia possibile accedere alla propria directory home.
ENV_HZ (testo)
-
Se impostato viene utilizzato per definire il valore della variabile d'ambiente HZ al login dell'utente. Il valore deve essere preceduto da
HZ=. Un valore comune per Linux è
HZ=100.
ENVIRON_FILE (testo)
-
Se questo file esiste ed è leggibile, l'ambiente di login viene letto da lì. Ogni riga deve essere nella forma nome=valore.
Le righe che iniziano con «#» sono trattate come commenti e ignorate.
ENV_PATH (testo)
-
If set, it will be used to define the PATH environment variable when a regular user login. The value is a colon separated list of paths (for example
/bin:/usr/bin) and can be preceded by
PATH=. The default value is
PATH=/bin:/usr/bin.
ENV_SUPATH (testo)
-
If set, it will be used to define the PATH environment variable when the superuser login. The value is a colon separated list of paths (for example
/sbin:/bin:/usr/sbin:/usr/bin) and can be preceded by
PATH=. The default value is
PATH=/sbin:/bin:/usr/sbin:/usr/bin.
ENV_TZ (testo)
-
Se impostato viene usato per definire la variabile d'ambiente TZ al login dell'utente. Il valore può essere il nome di una «timezone» preceduta da
TZ=
(ad esempio
TZ=CST6CDT), o il percorso completo di un file che contenga la specifica della «timezone» (ad esempio
/etc/tzname).
Se viene specificato il percorso completo di un file che però non esiste o non può essere letto, allora viene utilizzato il valore predefinito
TZ=CST6CDT.
LOGIN_STRING (testo)
-
Il testo da utilizzare per richiedere la password. Il valore predefinito è «Password: » o una sua traduzione. Se si imposta questa variabile allora il testo non verrà tradotto.
Se il testo contiene
%s, questo verrà sostituito dal nome dell'utente.
MAIL_CHECK_ENAB (testo)
-
Abilita la verifica e stampa a video dello stato della casella di posta al momento dell'accesso al sistema.
Andrebbe disabilitato se i file di avvio della shell effettuano già questo controllo («mailx -e» o equivalente).
MAIL_DIR (testo)
-
La directory di spool per la posta. Questa è necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato. Se non è specificata viene utilizzato un valore impostato al momento della compilazione.
MAIL_FILE (testo)
-
Imposta la posizione delle caselle di posta degli utenti relative alla loro directory home.
Le variabili
MAIL_DIR
e
MAIL_FILE
vengono utilizzate da
useradd,
usermod
e
userdel
per creare, spostare e cancellare le caselle di posta dell'utente.
Se
MAIL_CHECK_ENAB
è impostata a
yes
allora sono anche utilizzate per impostare la variabile d'ambiente
MAIL.
QUOTAS_ENAB (booleano)
-
Abilita l'impostazione di limiti di risorsa definiti in
/etc/limits
e ulimit, umask e livello di «nice» in base al campo gecos del passwd dell'utente.
SULOG_FILE (testo)
-
Se definito, tutta l'attività di «su» viene tracciata in questo file.
SU_NAME (testo)
-
Se definito è il nome del comando da mostrare quando si esegue «su -». Ad esempio, se lo di definisce come «su» allora «ps» mostrerà che il comando è «-su». Se non definito, «ps» mostrerà il nome della shell invocata, come «-sh».
SU_WHEEL_ONLY (booleano)
-
Se
yes, l'utente deve essere elencato come membro del primo gruppo con gid 0 in
/etc/group
(chiamato
root
in molti sistemi Linux) perché sia possibile usare
su
verso account con uid 0. Se il gruppo non esiste o è vuoto, nessuno potrà utilizzare
su
verso uid 0.
SYSLOG_SU_ENAB (booleano)
-
Abilita la tracciatura su «syslog» dell'attività di
su, oltre a quella sul file «sulog».
USERGROUPS_ENAB (booleano)
-
Abilita l'impostazione dei bit di gruppo di umask in modo che siano gli stessi dei bit del proprietario (esempio: 022 -> 002, 077 -> 007) per utenti non root a condizione che uid e gid siano identici e che il nome utente sia lo stesso del gruppo primario.
Se impostato a
yes,
userdel
cancellerà il gruppo dell'utente se non contiene altri membri, e
useradd
creerà automaticamente un gruppo con lo stesso nome dell'utente.
FILE
/etc/passwd
-
Informazioni sugli account utente.
/etc/shadow
-
Informazioni sicure sugli account utente.
/etc/login.defs
-
Configurazione del pacchetto password shadow
VALORI RESTITUITI
In caso di successo, il valore restituito da
su
è quello del comando da esso eseguito.
Se questo comando è terminato da un segnale,
su
restituisce il numero del segnale più 128.
Se «su» deve terminare il comando (perché gli è stato chiesto di terminare ma il comando non è terminato in tempo),
su
restituisce 255.
Alcuni dei codici d'uscita di
su
sono indipendenti dal comando eseguito:
0
-
successo (solo
--help)
1
-
Errore di sistema o di autenticazione
126
-
Il comando richiesto non è stato trovato
127
-
Il comando richiesto non può essere eseguito
"
VEDERE ANCHE
login(1),
login.defs(5),
sg(1),
sh(1).