Un guscio limitato limita ciò che un account utente può fare su Linux. Un utente limitato non può cambiare la loro directory e tu controlli quali comandi hanno accesso. Ecco come impostare un guscio limitato su Linux.
Groups ristretti
Un guscio limitato non è un guscio diverso. È una modalità diversa di una shell standard . Il Basamento , Korn. , Pesce e altri gusci possono essere avviati in modalità shell limit. Usereremo Bash in questo articolo, ma gli stessi principi si applicano agli altri conchiglie.
Perché i gusci limitatiti sono solo un altro modo per utilizzare il tuo guscio standard, sono facili da configurare. Non c'è niente da installare e sono disponibili ovunque sia Linux.
Anche i gusci limitatiti possono essere applicati anche agli script. Ciò garantisce che qualsiasi danno possa causare se sono stati scritti in modo errato è limitato ai confini del loro mondo ristretto e che non hanno accesso a tutto il tuo computer.
Sii consapevole, però, che i gusci limitati non sono completamente a prova di fuga. Qualcuno con abbastanza conoscenza può sfuggire a un guscio limitato. Sono fantastici per mettere i confini sicuri su un utente casuale, ma non fare affidamento su conchiglie ristrette per qualsiasi sicurezza del mondo reale su un sistema di produzione.
IMPARENTATO: Qual è la differenza tra Bash, Zsh e altri gusci Linux?
Bash limitato
Quando esegui Bash come guscio limitato, l'utente ha alcune funzionalità rimosse da loro. Nello specifico, l'utente non può :
-
Utilizzo
cdper cambiare la directory di lavoro. -
Cambia i valori del
$ Path.,$ Shell.,$ Bash_env., o$ Env.Variabili ambientali (ma possono leggere i valori correnti). -
Leggere o cambiare
$ Shellopts.Opzioni ambientali della conchiglia. - Reindirizzare l'output di un comando.
-
Invocare comandi che richiedono un percorso per localizzarli. Cioè, non puoi emettere un comando che ha una o più barre avanti "
/" dentro. -
Invocare
esecuzionesostituire un processo diverso per il guscio. - Utilizzare una qualsiasi delle caratteristiche limitate in uno script.
Puoi invocare un guscio di bash limitato usando il
-R
(limitato) opzione. Tenere a fare un semplice compito come cambiare la directory di lavoro è vietato. Un messaggio Terse te lo dice
cd
è limitato.
Bash -r
Documenti CD
Il guscio di bash può anche rilevare quando è stato invocato usando "rbash" invece di "bash". Questo lo fa iniziare anche come un guscio limitato. Ciò fornisce un modo conveniente per impostare il shell predefinito per un determinato utente, che useremo presto.
Se usiamo il
dove si trova
comando su Ubuntu per cercare il
rbash.
I file, vedremo che l'eseguibile è nella directory "usr / bin". La pagina Man è in directory "/ usr / share / man / man1".
Usando il
ls.
comando con il.
-L.
(lungo) l'opzione rivela che
rbash.
è
in realtà un collegamento simbolico
a
basamento
.
dove rbash
LS -L / USR / BIN / RBASH
Su Manjaro e Fedora, il
rbash.
Il collegamento simbolico doveva essere creato. Questo funziona su entrambe le distribuzioni:
dove rbash
sudo ln -s / bin / bash / bin / rbash
dove rbash
La seconda volta che usiamo il
dove si trova
comando, trova
rbash.
nella directory "/ usr / bin".
Limitando un utente.
Facciamo
Crea un nuovo account utente
chiamato "minnie". Metteremo il loro guscio per essere il guscio limitato usando il
-S
(shell) opzione del
USERADD.
comando. Bene anche
Imposta la password dell'account
usando il
passwd.
comando e creeremo una cartella iniziale per loro.
Il
-P
bandiera (genitori) nel
mkdir.
Comando dice
mkdir.
Per creare la directory di destinazione e tutte le directory genitore di cui ha bisogno per creare. Quindi creando la directory "/ home / minnie / bin", creiamo allo stesso tempo la directory "/ home / minnie" allo stesso tempo.
sudo useradd minnie -s / bin / rbash
sudo passwd minnie
sudo mkdir -p / home / minnie / bin
Quando Minnie accede, sarà in esecuzione in un guscio limitato.
CD
Non può richiamare i comandi che devono includere una barra in avanti "
/
":
/ usr / bin / ping
Tuttavia, può ancora eseguire comandi che si trovano nel percorso.
Ping
Questo non è il comportamento che potresti aspettarti, e certamente non è quello che vogliamo. Per stringere ulteriormente le restrizioni, dobbiamo cambiare il percorso che il guscio di Minnie utilizzerà per cercare comandi.
Stringendo le restrizioni
Quando abbiamo creato la directory home di Minnie "/ Home / Minnie", abbiamo anche creato una directory "/ home / minnie / bin". È qui che entra in gioco quella directory.
Stiamo andando a modificare il file ".bash_profile" di Minnie e impostare il suo percorso per puntare solo a tale directory. 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 cambiare il suo percorso.
sudo gedit /home/minnie/.bash_profile
O Modifica il "percorso =" esistente o aggiungere la seguente riga:
percorso = $ home / bin
Salva il file. Bene
cambia il proprietario del file
per root usando il
chown
comando e.
Modificare le autorizzazioni del file
usando il
chmod.
comando. Solo l'utente root sarà in grado di modificare il file.
Sudo chown root: root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
La prossima volta che l'utente ha registrato Minnie, il suo percorso punta a una singola cartella.
Il nostro utente limitato Minnie può usare solo comandi integrati Bash come
eco
,
alias
, e
disconnettersi
. Non può nemmeno usare
ls.
!
LS
Avremo landogna di allentare il nostro Strunglinghold un po 'se vogliamo che siano in grado di fare qualcosa di utile. Creeremo alcuni collegamenti simbolici dalla directory "bin" di Minnie ai comandi che vogliamo che Minnie sia in grado di utilizzare.
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 / mignolo / home / minnie / bin
Quando Minnie successivo si accede, scoprirà che può usare i comandi integrati del bash, oltre a quei comandi che sono stati collegati.
LS
Pinky Dave
Uptime
Limitando gli utenti esistenti
Abbiamo creato Minnie come nuovo utente. Per
cambia la shell di un esistente
utente, possiamo usare il
-S
(shell) opzione del
usermod.
comando.
sudo usermod -s / bin / rbash mary
Puoi usare il
meno
Comando sul file "/ etc / passwd" per vedere rapidamente quale shell è impostata come shell predefinita dell'utente.
Meno / etc / passwd
Possiamo vedere che l'utente Mary utilizzerà il guscio limitato quando si registra successivamente.
Ricorda di applicare le altre modifiche per limitare il loro
$ Path.
Variabile di ambiente e per impostare i comandi che si desidera che l'utente Mary sia in grado di eseguire.
Limitando gli script
Un utente regolare e illimitato può avviare script che vengono eseguiti in un guscio limitato. Copia le seguenti linee e incollali in un editor. Salva il file come "limitato.sh" e chiudi l'editor.
#! / Bin / Bash # Script inizia nel normale shell bash echo "## in modalità illimitata! ##" eco Echo "Directory corrente:` PWD` echo "Modifica della directory" CD / USR / Condividi echo "Ora nella directory:` pwd` " echo "Modifica della home directory" cd ~. echo "Ora nella directory:` pwd` " # Impostazione della modalità limitata set -R. eco echo "## in modalità limitata! ##" eco Echo "Directory corrente:` PWD` Echo "Modifica della directory a / home /" cd / home. echo "ancora nella directory:` pwd` " eco echo "cercando di avviare un altro guscio" / bin / bash eco echo "cercando di reindirizzare il comando output" LS -L $ Home & GT; my_files.txt. gatto my_files.txt. eco Esci 0
Dobbiamo usare il
chmod.
comando con il.
+ X.
(Esegui) Bandiera per creare lo script eseguibile.
CHMOD + X limitato.sh
La prima parte dello script funziona in un guscio normale.
./ limitato.sh
La seconda porzione dello script: il bit dopo la riga "Set -R" funziona in una guscio limitato.
Nessuna delle azioni tentata ha successo nella porzione limitata della sceneggiatura.
È possibile effettuare un intero script per funzionare in un guscio limitato aggiungendo
-R
alla prima riga:
! # / Bin / bash -r
Ricorda Houdini.
I conchiglie ristretti sono utili, ma non completamente infallibili. Un utente sufficientemente esperto potrebbe essere in grado di sfuggirli. Ma se usato giudiziosamente, sono un modo utile per stabilire un insieme di limitazioni per un particolare account.