Immagina questo scenario. Si desidera consentire a un utente di eseguire solo determinate attività ed eseguire determinati comandi. L'utente non deve modificare le variabili/percorsi di ambiente. Non può visitare le altre directory tranne la sua home directory e non può passare ad altri utenti, ecc. L'utente può essere in grado di eseguire solo alcuni comandi assegnati dall'amministratore di sistema. È possibile? Sì! Qui è dove Shell con restrizioni viene in aiuto. Utilizzando Restricted Shell, possiamo facilmente limitare l'accesso degli utenti al sistema Linux. Dopo aver messo gli utenti in modalità shell con restrizioni, possono eseguire solo un set limitato di comandi. In questo breve tutorial, parleremo di come farlo in Linux. Ho testato questa guida sul server minimo CentOS 7. Tuttavia, funzionerà sulla maggior parte delle distribuzioni simili a Unix.
Cos'è la shell con restrizioni?
Innanzitutto, vorrei chiarire cos'è esattamente Restricted Shell. Non è una shell separata come Bash, Korn Shell ecc. Se avvii una shell esistente usando le opzioni "rbash", "--restricted", "-r", allora diventerà una shell con restrizioni. Ad esempio, la shell Bourne può essere avviata come shell con restrizioni con il comando bsh -r e la shell Korn con il comando ksh -r .
La Restricted Shell limiterà gli utenti dall'esecuzione della maggior parte dei comandi e dalla modifica della directory di lavoro corrente. La Restricted Shell imporrà le seguenti restrizioni agli utenti:
- Non ti permetterà di eseguire cd comando. Quindi non puoi andare da nessuna parte. Puoi semplicemente rimanere nella directory di lavoro corrente.
- Non ti consentirà di modificare i valori di $PATH , $SHELL , $BASH_ENV o $ENV variabili ambientali.
- Non ti consentirà di eseguire un programma che contiene un carattere /(barra). Ad esempio, non puoi eseguire /usr/bin/uname o ./uname comando. Puoi comunque eseguire il comando uname. In altre parole, puoi eseguire i comandi solo nel percorso corrente.
- Non puoi reindirizzare l'output usando ' > ', ' >| ', ' <> ', ' >& ', ' &> ' e ' >> ' operatori di reindirizzamento.
- Non ti permetterà di uscire dalla modalità shell con restrizioni all'interno degli script.
- Non ti permetterà di disattivare la modalità shell con restrizioni con 'set +r' o 'imposta +o limitato' .
Questo può essere molto utile quando un numero elevato di utenti utilizza un sistema condiviso. Quindi, se vuoi consentire agli utenti di eseguire solo comandi specifici, Shell con restrizioni è un modo per farlo.
Limitare l'accesso dell'utente al sistema Linux utilizzando la shell con restrizioni
Innanzitutto, crea un collegamento simbolico chiamato rbash da Bash come mostrato di seguito. I seguenti comandi devono essere eseguiti come root utente.
# ln -s /bin/bash /bin/rbash
Quindi, crea un utente chiamato "otechnix" con rbash come sua shell di accesso predefinita.
# useradd ostechnix -s /bin/rbash
Imposta la password per il nuovo utente.
# passwd ostechnix
Crea un cestino directory all'interno della cartella home del nuovo utente.
# mkdir /home/ostechnix/bin
Ora, dobbiamo specificare quali comandi l'utente può eseguire.
Qui, lascerò che l'utente esegua solo "ls" , "mkdir" e "ping" comandi. Puoi assegnare qualsiasi comando a tua scelta.
Per farlo, esegui i seguenti comandi:
# ln -s /bin/ls /home/ostechnix/bin/ls
# ln -s /bin/mkdir /home/ostechnix/bin/mkdir
# ln -s /bin/ping /home/ostechnix/bin/ping
Ora capisci perché abbiamo creato la directory "bin" nel passaggio precedente. Gli utenti non possono eseguire alcun comando tranne i tre comandi precedenti.
Quindi, impedisci all'utente di modificare .bash_profile .
# chown root. /home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile
Modifica /home/otechnix/.bash_profile file:
# vi /home/ostechnix/.bash_profile
Modifica la variabile PATH come di seguito.
[...] PATH=$HOME/bin [...]
Premi ESC chiave e digita :wq per salvare e chiudere il file.
Ora, quando l'utente effettua l'accesso, la shell con restrizioni (rbash) verrà eseguita come shell di accesso predefinita e leggerà il .bash_profile , che imposterà PATH su $HOME/bin in modo che l'utente possa eseguire solo ls , mkdir e ping comandi. La shell con restrizioni non consentirà all'utente di modificare PATH e le autorizzazioni su .bash_profile non consentirà all'utente di modificare l'ambiente per aggirare le restrizioni durante la sessione di accesso successiva.
Verifica di Rbash
Ora, disconnettiti dall'utente root e accedi nuovamente con l'utente appena creato, ad esempio ostechnix nel nostro caso.
Quindi, esegui alcuni comandi per verificare se funziona o meno. Ad esempio, voglio cancellare il Terminale.
Per farlo, ho eseguito:
$ clear
Risultato di esempio:
-rbash: clear: command not found
Non puoi usare cd comando per passare alla directory diversa.
$ cd /root
Risultato di esempio:
-rbash: cd: restricted
Non puoi nemmeno reindirizzare l'output utilizzando > operator.
$ cat > file.txt
Risultato di esempio:
-rbash: file.txt: restricted: cannot redirect output
L'utente "otechnix" può utilizzare solo i comandi assegnati da te (l'amministratore di sistema, ovviamente). Nel nostro caso, l'utente può eseguire i comandi ls, mkdir e ping.
$ ls
$ mkdir ostechnix
$ ping -c 3 google.com
A parte questi tre comandi, l'utente non può eseguire nulla. È completamente sotto il tuo controllo.
Lettura consigliata:
- Come monitorare l'attività degli utenti in Linux
Consenti nuovi comandi agli utenti
Se desideri assegnare più comandi a un utente, disconnettiti dall'utente corrente e torna alla root utente e assegnare i comandi come mostrato di seguito.
Ad esempio, per consentire all'utente (es. ostechnix) di eseguire rm comando, esegui il comando seguente come root utente.
# ln -s /bin/rm /home/ostechnix/bin/rm
Ora l'utente può usare il comando "rm".
Per maggiori dettagli, fare riferimento alle pagine di manuale nel collegamento riportato di seguito.
- Pagine man di Rbash