Een beperkte shell beperkt wat een gebruikersaccount kan doen op Linux. Een gebruiker met beperkte rechten kan zijn directory niet wijzigen en u bepaalt tot welke opdrachten ze toegang hebben. Hier leest u hoe u een beperkte shell op Linux instelt.
Beperkte shells
Een beperkte schaal is geen andere schaal. Het is een andere modus van een standaardshell. De Bash, Korn, Fish en andere shells kunnen allemaal worden gestart in de beperkte shell-modus. We gebruiken Bash in dit artikel, maar dezelfde principes zijn van toepassing op de andere shells.
Omdat limited shells gewoon een andere manier zijn om uw standaard shell te gebruiken, zijn ze eenvoudig in te stellen. U hoeft niets te installeren en ze zijn overal beschikbaar waar Linux is.
Beperkte shells kunnen ook op scripts worden toegepast. Dat zorgt ervoor dat eventuele schade die ze kunnen veroorzaken als ze verkeerd zijn geschreven, beperkt blijft tot de grenzen van hun beperkte wereld en dat ze geen toegang hebben tot uw hele computer.
Houd er echter rekening mee dat beperkte granaten niet volledig ontsnappingsbestendig zijn. Iemand met voldoende kennis kan ontsnappen aan een beperkte schaal. Ze zijn geweldig om veilige grenzen te stellen aan een incidentele gebruiker, maar vertrouw niet op beperkte shells voor echte beveiliging op een productiesysteem.
VERWANT: Wat is het verschil tussen Bash, Zsh en andere Linux-shells?
Beperkte bash
Wanneer u Bash als een beperkte shell uitvoert, heeft de gebruiker enkele mogelijkheden eruit verwijderd. Specifiek de gebruiker kan niet​
- Gebruik
cd
om de werkmap te wijzigen. - Wijzig de waarden van de
$PATH
​$SHELL
​$BASH_ENV
, of$ENV
omgevingsvariabelen (maar ze kunnen de huidige waarden lezen). - Lees of verander
$SHELLOPTS
shell milieu-opties. - Leid de uitvoer van een commando om.
- Roep commando’s op waarvoor een pad nodig is om ze te vinden. Dat wil zeggen, je kunt geen commando geven met een of meer schuine strepen “
/
” in het. - Beroep doen op
exec
om de shell door een ander proces te vervangen. - Gebruik een van de beperkte functies in een script.
U kunt een beperkte Bash-shell aanroepen door de -r
(beperkte) optie. Het is verboden om een ​​eenvoudige taak uit te voeren, zoals het wijzigen van de werkmap. Een beknopt bericht vertelt je dat cd
is beperkt.
bash -r
cd Documents
De Bash-shell kan ook detecteren wanneer deze is aangeroepen met ‘rbash’ in plaats van ‘bash’. Hierdoor start het ook als een beperkte shell. Dit biedt een gemakkelijke manier om de standaardshell voor een bepaalde gebruiker in te stellen, die we binnenkort zullen gebruiken.
Als we de whereis
commando op Ubuntu om te zoeken naar de rbash
bestanden, zullen we zien dat het uitvoerbare bestand in de map “usr / bin” staat. De man-pagina staat in de directory “/ usr / share / man / man1”.
De … gebruiken ls
commando met de -l
(lange) optie laat dat zien rbash
is eigenlijk een symbolische link naar bash
​
whereis rbash
ls -l /usr/bin/rbash
Op Manjaro en Fedora, de rbash
symbolische link moest worden gemaakt. Dit werkt op beide distributies:
whereis rbash
sudo ln -s /bin/bash /bin/rbash
whereis rbash
De tweede keer dat we de whereis
commando, vindt het rbash
in de map “/ usr / bin”.
Een gebruiker beperken
Laten we een nieuw gebruikersaccount maken met de naam ‘Minnie’. We zullen hun shell instellen als de beperkte shell met behulp van de -s
(shell) optie van de useradd
opdracht. We zullen ook het wachtwoord van het account instellen met behulp van depasswd
commando, en we zullen een thuismap voor hen maken.
De -p
(ouders) vlag in de mkdir
commando vertelt mkdir
om de doeldirectory te maken en alle bovenliggende mappen die het ook moet maken. Dus door de map “/ home / minnie / bin” aan te maken, maken we tegelijkertijd de map “/ home / minnie” aan.
sudo useradd minnie -s /bin/rbash
sudo passwd minnie
sudo mkdir -p /home/minnie/bin
Wanneer Minnie inlogt, draait ze in een beperkte shell.
cd
Ze kan geen commando’s gebruiken die een schuine streep moeten bevatten “/
​
/usr/bin/ping
Ze kan echter nog steeds opdrachten uitvoeren die in het pad worden gevonden.
ping
Dat is niet het gedrag dat u misschien had verwacht, en het is zeker niet wat we willen. Om de beperkingen verder aan te scherpen, moeten we het pad wijzigen dat de shell van Minnie zal gebruiken om naar commando’s te zoeken.
Aanscherping van de beperkingen
Toen we minnie’s homedirectory “/ home / minnie” aanmaakten, hebben we ook een directory “/ home / minnie / bin” gemaakt. Dit is waar die map in het spel komt.
We gaan het “.bash_profile” -bestand van Minnie bewerken en haar pad zo instellen dat het alleen naar die map verwijst. We zullen ook het “.bash_profile” -bestand van Minnie beperken, zodat alleen root het kan bewerken. Dat betekent dat geen enkele andere gebruiker dat bestand kan bewerken en haar pad kan wijzigen.
sudo gedit /home/minnie/.bash_profile
Bewerk het bestaande “PATH =” of voeg de volgende regel toe:
PATH=$HOME/bin
Sla het bestand op. We zullen de eigenaar van het bestand wijzigen in root met behulp van de chown
commando en verander de bestandsrechten met de chmod
opdracht. Alleen de rootgebruiker kan het bestand bewerken.
sudo chown root:root /home/minnie/.bash_profile
sudo chmod 755 /home/minnie/.bash_profile
ls -l /home/minnie/.bash_profile
De volgende keer dat gebruiker minnie inlogt, wijst haar pad naar een enkele map.
Onze beperkte gebruiker minnie kan alleen ingebouwde Bash-commando’s gebruiken, zoals echo
​ alias
, en logout
​ Ze kan niet eens gebruiken ls
​
ls
We zullen onze wurggreep een beetje moeten verslappen als we willen dat ze überhaupt iets nuttigs kunnen doen. We zullen een aantal symbolische koppelingen maken van de “bin” -directory van Minnie naar de commando’s die we willen dat Minnie kan gebruiken.
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
Wanneer Minnie de volgende keer inlogt, zal ze ontdekken dat ze de ingebouwde Bash-commando’s kan gebruiken, plus de commando’s die eraan zijn gekoppeld.
ls
pinky dave
uptime
Bestaande gebruikers beperken
We hebben minnie gemaakt als een nieuwe gebruiker. Om de shell van een bestaande gebruiker te wijzigen, kunnen we de -s
(shell) optie van de usermod
opdracht.
sudo usermod -s /bin/rbash mary
U kunt de less
commando op het “/ etc / passwd” bestand om snel te zien welke shell is ingesteld als de standaard shell van een gebruiker.
less /etc/passwd
We kunnen zien dat gebruiker Mary de beperkte shell zal gebruiken wanneer ze de volgende keer inlogt.
Vergeet niet om de andere wijzigingen toe te passen om hun $PATH
omgevingsvariabele en om de opdrachten in te stellen die u wilt dat de gebruiker mary kan uitvoeren.
Scripts beperken
Een gewone, onbeperkte gebruiker kan scripts starten die in een beperkte shell worden uitgevoerd. Kopieer de volgende regels en plak ze in een editor. Sla het bestand op als “restricted.sh” en sluit de editor.
#!/bin/bash # script starts in normal Bash shell echo "## In UNrestricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory" cd /usr/share echo "Now in directory: `pwd`" echo "Changing to home directory" cd ~ echo "Now in directory: `pwd`" # Setting restricted mode set -r echo echo "## In restricted mode! ##" echo echo "Current directory: `pwd`" echo "Changing directory to /home/" cd /home echo "Still in directory: `pwd`" echo echo "Trying to start another shell" /bin/bash echo echo "Trying to redirect command output" ls -l $HOME > my_files.txt cat my_files.txt echo exit 0
We moeten de chmod
commando met de +x
(execute) vlag om het script uitvoerbaar te maken.
chmod +x restricted.sh
Het eerste deel van het script wordt in een normale shell uitgevoerd.
./restricted.sh
Het tweede gedeelte van het script – het bit na de regel “set -r” – wordt in een beperkte shell uitgevoerd.
Geen van de uitgevoerde acties slaagt in het beperkte gedeelte van het script.
Een volledig script kan worden uitgevoerd in een beperkte shell door toe te voegen -r
naar de eerste regel:
!#/bin/bash -r
Onthoud Houdini
Beperkte schelpen zijn nuttig, maar niet helemaal onfeilbaar. Een voldoende bekwame gebruiker kan eraan ontsnappen. Maar als ze oordeelkundig worden gebruikt, zijn ze een handige manier om een ​​reeks beperkingen voor een bepaald account vast te stellen.