LShell o Limited Shell è scritto in python per limitare l'utente per un insieme specifico di comandi e directory. Puoi creare un ambiente utente con accesso limitato, puoi anche abilitare i comandi di disabilitazione sull'accesso SSH.
Installa una shell limitata
Usa il comando seguente per installare il pacchetto LShell sul tuo sistema basato su Debian. Per altri sistemi operativi, devi cercare su Google il pacchetto di lshell per la tua distribuzione.
$ sudo apt-get install lshell
Passa utente a LShell
Ora imposta LShell come shell predefinita per gli utenti per i quali sei richiesto. Ad esempio per cambiare la shell dell'utente sarah.
$sudo chsh sarah Changing the login shell for sarah Enter the new value, or press ENTER for the default Login Shell [/bin/lshell]:/usr/bin/lshell
Puoi anche impostare lshell come shell predefinita per l'utente durante la creazione dell'account utente come segue.
$ sudo adduser --shell /usr/bin/lshell raj
Configura LShell
Ora inizia con la configurazione di lshell. Modifica il file di configurazione di lshell /etc/lshell.conf . Ci sono 4 sezioni di base nel file di configurazione.
[globale] : In questa sezione definiamo le impostazioni applicate a livello globale. Ad esempio i log. [predefinito] : In questa sezione abbiamo impostato i valori predefiniti che hanno applicato tutti gli utenti e i gruppi. Le impostazioni di questa sezione possono essere sovrascritte con impostazioni specifiche dell'utente e del gruppo. [NOME UTENTE] : In questa sezione specifichiamo le impostazioni specifiche dell'utente. Impostazioni di questa sezione applicate solo all'utente [grp:GROUPNAME] : In questa sezione specifichiamo le impostazioni specifiche del gruppo. Impostazioni di questa sezione applicate a tutti gli utenti del gruppo
Un [predefinito] profile viene applicato a tutti gli utenti che utilizzano lshell. Puoi creare [nome utente] sezione o un gruppo [grp:groupname] sezione per personalizzare utenti e gruppi di preferenze specifiche.
L'ordine di priorità è Utente>> Gruppo>> Predefinito . La sezione utente ha la priorità più alta e quella predefinita ha la priorità più bassa.
[global] logpath : /var/log/lshell/ loglevel : 2[default] allowed : ['ls','pwd','cd','cat','cp'] forbidden : [';', '&', '|','`','>','<', '$(', '${'] sudo_commands : ['ls', 'more'] warning_counter : 2 aliases : {'ll':'ls -l', 'vim':'rvim'} prompt : "%[email protected]%h" timer : 0 path : ['/home', '/usr'] env_path : ':/usr/bin/usr/local/bin' env_vars : {'foo':1, 'bar':'helloworld'} scp : 1 # or 0 sftp : 1 # or 0 overssh : ['rsync','ls'] strict : 0 history_file : "/home/%u/.lshell_history"[grp:wheel] warning_counter : 5 overssh : - ['ls'][raj] allowed : 'all' - ['su','rm','mv'] path : ['/etc', '/usr'] - ['/usr/local'] home_path : '/home/raj'[sarah] allowed : + ['ping'] - ['ls'] path : - ['/usr/local'] strict : 1 scpforce : '/home/sarah/uploads/'
Ad esempio, l'utente "rja" e l'utente "sarah" appartengono entrambi al gruppo UNIX "wheel":
Ruota del gruppo:
- Gli utenti del gruppo ruota hanno un contatore di avviso impostato su 5
- Agli utenti del gruppo di ruote non è consentito il comando "ls".
Utente raj:
- Può accedere a /etc e /var ma non a /usr/local
- Può accedere a tutti i comandi nei suoi comandi execpt PATH – su, rm, vm
- ha un contatore di avvisi impostato su 5 [predefinito]
- ha il suo percorso di casa impostato su "/home/raj"
Utente sarah:
- Può accedere a /home e /usr ma non a /usr/local
- è consentito il comando predefinito "ping" ma non "ls"
- La rigidità è impostata su 1 (non è autorizzato a digitare un comando sconosciuto)
Nome opzione | Spiegazione |
---|---|
directory di registro (predefinita /var/log/lshell/ ) | |
imposta il livello del registro su 0, 1, 2, 3 o 4 (0:nessun registro, 1:meno dettagliato, 4:registra tutti i comandi) | |
configura il nome del file di registro (il valore predefinito è %u, ovvero nomeutente.log) | |
elenco dei comandi consentiti o "tutti" per consentire tutti i comandi nel PERCORSO dell'utente | |
un elenco di caratteri o comandi proibiti — nega vim, poiché permette di sfuggire a lshell | |
un elenco di comandi consentiti da utilizzare con sudo(8) | |
numero di avvisi quando l'utente inserisce un valore proibito prima di uscire da lshell, impostare su -1 per disabilitare. | |
elenco di alias di comando (simile alla direttiva alias di bash) | |
testo di introduzione da stampare (quando si entra in lshell) | |
configura il tuo prompt usando %u o %h (predefinito:nome utente) | |
imposta ordinamento prompt aggiornamento directory corrente (predefinito:0) | |
un valore in secondi per il timer della sessione | |
elenco di percorsi per limitare "geograficamente" l'utente | |
imposta la cartella home del tuo utente | |
imposta la variabile di ambiente $PATH dell'utente | |
un elenco di percorsi; tutti i file eseguibili all'interno di questo percorso saranno consentiti | |
aggiungi variabili d'ambiente | |
consentire o vietare l'uso di scp (impostato su 1 o 0) | |
Vieta il caricamento di scp | |
Vieta download scp | |
consenti di vietare l'uso di sftp (impostato su 1 o 0) | |
elenco di comandi che possono essere eseguiti su ssh | |
rigore di registrazione. 1 per qualsiasi comando sconosciuto è considerato vietato e 0 come sconosciuto | |
forza i file inviati tramite scp a una directory specifica | |
dimensione massima del file della cronologia | |
imposta il nome del file della cronologia (l'impostazione predefinita è /home/%u/.lhistory) | |
definire lo script da eseguire all'accesso dell'utente |