LOGIN(1) | Comandi utente | LOGIN(1) |
login - apre una sessione sul sistema
login [-p] [-h macchina] [nome] [ENV=VAR...]
login [-p] [-h macchina] -f nome
login [-p] -r macchina
login viene utilizzato per aprire una sessione sul sistema. Normalmente viene invocato automaticamente rispondendo al prompt login: del terminale. login può essere trattato in maniera speciale dalla shell e non può essere invocato come sottoprocesso. Quando è richiamato dalla shell, login va invocato come exec login che termina la shell utente attuale (il che impedirà al nuovo utente che accede, di poter ritornare alla sessione del chiamante). Il tentativo di esecuzione di login da una shell che non sia quella di login produce un messaggio d'errore.
Se necessario viene quindi chiesta la password all'utente. Durante questa operazione l'eco sul terminale è disabilitata per non rivelare la password. Solo un basso numero di tentativi falliti è permesso prima che login termini e che la connessione sia interrotta.
Se la scadenza delle password è abilitata per il proprio account, prima di proseguire ci può essere la richiesta di una nuova password. Il programma chiederà prima la vecchia password e poi la nuova per poter continuare. Per maggiori informazioni si faccia riferimento a passwd(1).
I propri ID di utente e gruppo vengono poi impostati in base ai valori definiti nel file /etc/passwd. I valori di $HOME, $SHELL, $PATH, $LOGNAME e $MAIL sono impostati in base ai campi appropriati nella voce della password. Anche i valori per ulimit, umask e nice possono essere impostati in base al campo GECOS.
In alcune installazioni la variabile d'ambiente $TERM può essere impostata in base al tipo di terminale della propria connessione, come specificato in /etc/ttytype.
Può anche essere eseguito uno script di inizializzazione per il proprio interprete dei comandi. Fare riferimento alla relativa sezione di manuale per maggiori informazioni su questa funzione.
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.
Il programma login NON è responsabile di rimuovere gli utenti dal file utmp. La correzione del proprietario di una sessione di terminale è responsabilità di getty(8) e init(8). Se si usa login senza exec dal prompt della shell, allora l'utente che si sta usando risulterà sempre connesso al sistema anche oltre il termine della «sottosessione».
-f
Nota: in questo caso username è obbligatorio.
-h
-p
-r
Le opzioni -r, -h e -f possono essere utilizzate solo quando login viene invocato da root.
Questa versione di login ha molte opzioni di compilazione; in un determinato sistema potrebbe esserne in uso solo una parte.
La posizione dei file è soggetta a differenze in base alla configurazione del sistema.
Il programma login NON è responsabile di rimuovere gli utenti dal file utmp. La correzione del proprietario di una sessione di terminale è responsabilità di getty(8) e init(8). Se si usa login senza exec dal prompt della shell, allora l'utente che si sta usando risulterà sempre connesso al sistema anche oltre il termine della «sottosessione».
Come per ogni programma, l'aspetto di login può essere simulata. Se utenti non fidati hanno accesso fisico alla macchina, essi potrebbero sfruttare questa cosa per ottenere la password della prossima persona che si siede davanti al terminale. In Linux si può utilizzare il meccanismo SAK per iniziare un percorso sicuro che previene questo tipo di attacchi.
Le seguenti variabili di configurazione in /etc/login.defs cambiano il comportamento di questo strumento:
CONSOLE_GROUPS (testo)
Usare con cautela - è possibile che gli utenti ottengano l'accesso permanente a questi gruppi anche se non accedono dalla console.
DEFAULT_HOME (booleano)
Se impostato a yes, l'utente accederà alla directory root (/) nel caso che non sia possibile accedere alla propria directory home.
ENV_PATH (testo)
ENV_SUPATH (testo)
ERASECHAR (numerico)
Il valore deve avere il prefisso «0» se in ottale, o «0x» se esadecimale.
FAIL_DELAY (numerico)
FAKE_SHELL (testo)
HUSHLOGIN_FILE (testo)
KILLCHAR (numerico)
Il valore deve avere il prefisso «0» se in ottale, o «0x» se esadecimale.
LOGIN_RETRIES (numerico)
Questa impostazione verrà probabilmente superata da quella di PAM poiché il modulo predefinito pam_unix ha una sua gestione con 3 tentativi. In ogni caso questa è una impostazione di sicurezza nel caso in cui si utilizzi un modulo PAM che ignora PAM_MAXTRIES.
LOGIN_TIMEOUT (numerico)
LOG_OK_LOGINS (booleano)
LOG_UNKFAIL_ENAB (booleano)
Nota: memorizzare i nomi sconosciuti potrebbe diventare un problema legato alla sicurezza se un utente inserisce la propria password al posto del nome utente.
TTYGROUP (testo), TTYPERM (testo)
In maniera predefinita la proprietà del terminale sarà impostata al gruppo primario dell'utente, mentre i permessi saranno 0600.
TTYGROUP può essere il nome del gruppo o il suo identificativo numerico.
Se si ha il comando write che è «setgid» e ha un gruppo speciale che possiede i terminali, definire TTYGROUP con lo stesso gruppo e TTYPERM a 0620. Altrimenti lasciare TTYGROUP commentato e assegnare TTYPERM a 622 o 600.
TTYTYPE_FILE (testo)
USERGROUPS_ENAB (booleano)
/var/run/utmp
/var/log/wtmp
/etc/passwd
/etc/shadow
/etc/motd
/etc/nologin
/etc/ttytype
$HOME/.hushlogin
/etc/login.defs
mail(1), passwd(1), sh(1), su(1), login.defs(5), nologin(5), passwd(5), securetty(5), getty(8).
27/07/2018 | shadow-utils 4.5 |