Beperkte shell gebruiken om te beperken wat een Linux-gebruiker kan doen

Een terminalvenster op een Linux-systeem.
Fatmawati Achmad Zaenuri / Shutterstock

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.

Nieuwste artikelen

spot_img

Related Stories

Leave A Reply

Vul alstublieft uw commentaar in!
Vul hier uw naam in