Risposte:
Il /etc/passwd
file ha come ultimo elemento sulla riga di un utente il programma da eseguire al momento dell'accesso. Per gli utenti normali questo è in genere impostato su /bin/sh
o altra shell (ad esempio bash, zsh).
Tradizionalmente, le identità utilizzate per possedere processi o file o altre risorse hanno la loro "shell" impostata /bin/false
come in
syslog:x:101:102::/home/syslog:/bin/false
Il syslog pseudo-utente possiede /var/log/syslog
ed è l'unico UID che ha i permessi di scrittura per quel file, ma non si può accedere come syslog utente in quanto non è necessario eseguire alcun interprete di comandi.
Per quanto riguarda la domanda a cui stai cercando di rispondere:
Crea un utente john che non dovrebbe ottenere una shell interattiva.
La domanda significa "Creare un utente di nome john
che non sarà in grado di accedere ed eseguire comandi da una shell". Interactive descrive il modo in cui funziona la shell: l'utente digita qualcosa e la shell fa qualcosa di conseguenza (esiste una sorta di comunicazione tra l'utente e la shell). La parola "interattivo" in realtà non aggiunge alcuna informazione alla domanda, poiché finché c'è un utente che digita i comandi, la sessione della shell è interattiva.
Esiste anche la modalità non interattiva, in cui l'utente salva una serie di comandi che desidera eseguire in un file (chiamato script di shell) ed esegue il file in seguito. Alcuni comandi si comportano diversamente a seconda che la shell sia eseguita in modo interattivo o non interattivo. Puoi leggere di più qui (questo documento è per bash
, ma lo stesso concetto vale per altre shell).
Su come creare un utente di questo tipo, se scorri man useradd
c'è un'opzione per impostare la shell di accesso, -s
o --shell
. Puoi anche creare un utente normalmente, in ogni caso lo desideri (cosa che suppongo tu sappia già?), Quindi modificare /etc/passwd
come nella risposta di msw .
Sì, cambiare la shell nel file delle password (/ etc / passwd) a qualche programma che non non consentirà una fuga di shell.
se vuoi essere un bofh / bin / false farà esattamente quello che vuoi.