Come usare la shell con restrizioni per limitare ciò che un utente Linux può fare

Contenuti

Una finestra di terminale su un sistema Linux.

Una shell ristretta limita ciò che un account utente può fare su Linux. Un utente con restrizioni non può cambiare la sua directory e tu controlli a quali comandi ha accesso. Prossimo, spiega come configurare una shell con restrizioni su Linux.

Conchiglie limitate

Una shell ristretta non è una shell distinta. È una modalità diversa da una shell standard. il Provato, Korn, Pez, e altre shell possono essere avviate in modalità shell limitata. Useremo Bash in questo post, ma gli stessi principi si applicano alle altre conchiglie.

Perché le shell limitate sono solo un altro modo per usare la shell standard, sono facili da configurare. Non c'è niente da installare e sono disponibili ovunque sia Linux.

Le shell limitate possono essere applicate anche agli script. Ciò garantisce che qualsiasi danno che possono causare se vengono scritti in modo errato è limitato ai confini del loro mondo ristretto e che non hanno accesso all'intero computer..

Nonostante questo, nota che i proiettili limitati non sono completamente a prova di perdite. Qualcuno con una conoscenza sufficiente può sfuggire a un guscio limitato. Sono ottimi per impostare limiti di sicurezza per un utente occasionale, ma non fare affidamento su shell limitate per la sicurezza del mondo reale su un sistema di produzione.

IMPARENTATO: Qual è la differenza tra Bash, Zsh e altre shell Linux?

Colpo limitato

Quando esegui Bash come shell con restrizioni, l'utente ha alcune funzionalità rimosse. In particolare, l'utente non può:

  • Utilizzo cd per cambiare la directory di lavoro.
  • Modificare i valori di $PATH , $SHELL , $BASH_ENV , oh $ENV variabili ambientali (ma possono leggere i valori correnti).
  • Leggi o cambia $SHELLOPTS opzioni ambientali shell.
  • Reindirizzare l'output di un comando.
  • Invocare comandi che richiedono un percorso per individuarli. In altre parole, non è possibile emettere un comando con una o più barre in avanti “/” In ciò.
  • Invocare exec sostituire il guscio con una procedura diversa.
  • Usa una qualsiasi delle funzioni limitate in uno script.

Puoi invocare una shell bash ristretta usando il -r opzione (limitato). È vietato tentare di eseguire un compito semplice come cambiare la directory di lavoro. Un laconico messaggio te lo dice cd È limitato.

bash -r
cd Documenti

non è possibile emettere un comando con una o più barre in avanti “rbash” invece di “bash”. Questo lo fa anche iniziare come una shell con restrizioni. Questo fornisce un modo conveniente per configurare la shell predefinita per un particolare utente, che useremo presto.

Se usiamo il whereis comando in Ubuntu per cercare il rbash record, non è possibile emettere un comando con una o più barre in avanti “usr / bidone”. La pagina man si trova nella directory “/ usr / Condividere / uomo / uomo1”.

Usando il ls comando con il -l L'opzione (lungo) rivela che rbash è in realtà un collegamento simbolico a bash .

dov'è rbash
ls -l /usr/bin/rbash

In Manjaro e Fedora, il rbash Dovevi creare un collegamento simbolico. Funziona su entrambe le distribuzioni:

dov'è rbash
sudo ln -s /bin/bash /bin/rbash
dov'è rbash

La seconda volta che usiamo il whereis comando, trova rbash nella directory “/ usr / bidone".

Limitazione di un utente

non è possibile emettere un comando con una o più barre in avanti “non è possibile emettere un comando con una o più barre in avanti”. Configurare la tua shell come shell vincolata usando il comando -s (guscio) opzione del useradd comando. Configurare anche la password dell'account utilizzando ilpasswd comando, e creeremo una cartella home per loro.

il -p (genitori) bandiera in mkdir il comando dice mkdir per creare la directory di destinazione e qualsiasi directory principale che devi creare in aggiunta. Quindi, non è possibile emettere un comando con una o più barre in avanti “/ casa / minnie / bidone”, non è possibile emettere un comando con una o più barre in avanti “/ casa / minnie” allo stesso tempo.

sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin

Quando Minnie effettua il login, verrà eseguito in una shell ristretta.

cd

non è possibile emettere un comando con una o più barre in avanti “/“:

/usr/bin/ping

Nonostante questo, puoi ancora eseguire i comandi trovati nel percorso.

ping

Non è il comportamento che mi sarei potuto aspettare, non è possibile emettere un comando con una o più barre in avanti. non è possibile emettere un comando con una o più barre in avanti, non è possibile emettere un comando con una o più barre in avanti.

non è possibile emettere un comando con una o più barre in avanti

non è possibile emettere un comando con una o più barre in avanti “/ casa / minnie”, non è possibile emettere un comando con una o più barre in avanti “/ casa / minnie / bidone”. non è possibile emettere un comando con una o più barre in avanti.

non è possibile emettere un comando con una o più barre in avanti “.non è possibile emettere un comando con una o più barre in avanti” non è possibile emettere un comando con una o più barre in avanti. Limiteremo anche il file ".bash_profile" di minnie in modo che solo root possa modificarlo. Ciò significa che nessun altro utente può modificare quel file e cambiarne il percorso..

sudo gedit /home/minnie/.bash_profile

Modifica il “PERCORSO =” esistente o aggiungere la riga successiva:

PATH=$HOME/bin

Salvare il file. Bene Modificare il proprietario del file root utilizzando il comando chown comando e modificare le autorizzazioni dei file usando il chmod comando. Solo l'utente root sarà in grado di modificare il file.

sudo chown root:radice /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile

La prossima volta che l'utente minnie accede, Il suo percorso punta a una singola cartella.

Il nostro utente limitato minnie può utilizzare solo comandi Bash integrati come echo, alias, e logout. Non può nemmeno usare ls!

ls

Tendremos que aflojar un poco nuestro dominio si queremos que puedan hacer algo útil. Crearemos algunos links simbólicos desde el directorio “bidone” de minnie a los comandos que queremos que minnie pueda utilizar.

sudo ln -s /bin/ls /home/minnie/bin
sudo ln -s /bin/top /home/minnie/bin
sudo ln -s /bin/uptime /home/minnie/bin
sudo ln -s /bin/pinky /home/minnie/bin

La prossima volta che Minnie effettua l'accesso, Scoprirai che puoi usare i comandi Bash integrati, contemporaneamente ai comandi a cui sono stati collegati.

ls
dave mignolo
uptime

Limitazione degli utenti esistenti

Creiamo minnie come nuovo utente. Per cambiare il guscio di un esistente Nome utente, possiamo usare il -s (guscio) opzione del usermod comando.

sudo usermod -s /bin/rbash mary

Puoi usare il less comando nel file “/ etc / passwd ”per vedere rapidamente quale shell è impostata come shell predefinita dell'utente.

less /etc/passwd

Possiamo vedere che l'utente mary utilizzerà la shell con restrizioni al prossimo accesso.

Ricorda di applicare le altre modifiche per limitare il tuo $PATH variabile d'ambiente e per impostare i comandi che si desidera che l'utente mary sia in grado di eseguire.

Limitazione dello script

Un utente normale e senza restrizioni può avviare script che vengono eseguiti in una shell limitata. Copia le seguenti righe e incollale in un editor. Salvare il file come “restricto.sh” y cierre el editor.

#!/cestino/bash

# script starts in normal Bash shell
echo "## In modalità con restrizioni UN! ##"

echo
echo "Directory corrente: 'pwd'"
eco "Modifica della directory"
cd /usr/share
echo "Ora in directory: 'pwd'"
eco "Passaggio alla home directory"
cd ~
echo "Ora in directory: 'pwd'"

# Setting restricted mode
set -r

echo
echo "## In modalità con restrizioni! ##"

echo
echo "Directory corrente: 'pwd'"
eco "Modifica della directory in /home/"
cd /home
echo "Ancora nella directory: 'pwd'"

echo
echo "Tentativo di avviare un'altra shell"
/bin/bash

echo
echo "Tentativo di reindirizzare l'output del comando"
ls -l $HOME > my_files.txt
cat my_files.txt
echo

exit 0

Dobbiamo usare il chmod comando con il +x (correre) flag per rendere eseguibile lo script.

flag per rendere eseguibile lo script

La prima parte dello script viene eseguita in una shell normale.

./limitato.sh

La seconda parte della sceneggiatura, flag per rendere eseguibile lo script “flag per rendere eseguibile lo script”, viene eseguito in una shell ristretta.

Nessuna delle azioni tentate ha successo nella parte riservata dello script.

Uno script completo può essere eseguito in una shell ristretta aggiungendo -r alla prima riga:

!#/bin/bash -r

Ricorda Houdini

I proiettili limitati sono utili, ma non del tutto infallibile. Un utente sufficientemente addestrato può evitarli. Ma se usato saggiamente, sono un modo utile per determinare una serie di limitazioni per un particolare account.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.