
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);