Een beperkte shell beperkt wat een gebruikersaccount kan doen op Linux. Een beperkte gebruiker kan hun map niet wijzigen en u regelt welke opdrachten waartoe ze toegang hebben. Hier is hoe een beperkte shell op Linux op te zetten.
Beperkte schalen
Een beperkte shell is geen andere shell. Het is een andere manier van een standaardschaal . De Bash , Korn , Vis en andere schelpen kunnen allemaal worden gestart in de beperkte Shell-modus. We gebruiken bash in dit artikel, maar dezelfde principes zijn van toepassing op de andere schelpen.
Omdat beperkte schelpen gewoon een andere manier zijn om uw standaardschaal te gebruiken, zijn ze gemakkelijk in te stellen. Er is niets te installeren, en ze zijn beschikbaar, waar Linux ook is.
Beperkte schalen kunnen ook worden toegepast op scripts. Dat zorgt ervoor dat eventuele schade die ze kunnen veroorzaken als ze verkeerd zijn geschreven, is beperkt tot de grenzen van hun beperkte wereld en dat ze geen toegang hebben tot uw hele computer.
Houd er echter rekening mee dat beperkte schelpen niet volledig ontsnappen aan -bestendig. Iemand met voldoende kennis kan aan een beperkte shell ontsnappen. Ze zijn geweldig voor het plaatsen van veilige grenzen op een informele gebruiker, maar vertrouwen niet op beperkte shells voor elke echte beveiliging op een productiesysteem.
VERWANT: Wat is het verschil tussen bash, zsh en andere Linux-schalen?
Beperkte bash
Wanneer je bash runt als een beperkte shell, heeft de gebruiker wat mogelijkheden van hen verwijderd. Specifiek de gebruiker kan niet :
-
Gebruik maken van
CDom de werkdirectory te wijzigen. -
Verander de waarden van de
$ Pad,Shell,$ Bash_env, of$ Envmilieuvariabelen (maar ze kunnen de huidige waarden lezen). -
Lezen of veranderen
$ SchelpsShell Environmental-opties. - Omleiden de uitvoer van een opdracht.
-
Oproepen opdrachten die een pad vereisen om ze te vinden. Dat wil zeggen, je kunt geen commando geven die een of meer vooruitschutting heeft "
/" in het. -
Aanroepen
execom een ander proces voor de schaal te vervangen. - Gebruik een van de beperkte functies in een script.
Je kunt een beperkte bash-shell oproepen met behulp van de
-R
(beperkte) optie. Proberen een eenvoudige taak te doen zoals het veranderen van de werkdirectory is verboden. Een TERE-bericht vertelt u dat
CD
is beperkt.
BASH -R
CD-documenten
De bash-shell kan ook detecteren wanneer het is aangeroepen met behulp van "rbash" in plaats van "bash". Dit zorgt ervoor dat het ook begint als een beperkte shell. Dit biedt een handige manier om de standaardschaal voor een bepaalde gebruiker in te stellen, die we snel zullen gebruiken.
Als we de
waar is
opdracht op ubuntu om naar de
rbash
Bestanden, we zullen zien dat het uitvoerbare bestand in de map "USR / bin" staat. De man van de man is in directory "/ usr / share / man / man1".
De ... gebruiken
ls
commando met de
-L
(lange) optie onthult dat
rbash
is
Eigenlijk een symbolische link
tot
bash
.
Waaris rbash
LS -L / USR / BIN / RBASH
Op Manjaro en Fedora, de
rbash
Symbolische link moest worden gemaakt. Dit werkt op beide distributies:
Waaris rbash
SUDO LN -S / BIN / BASH / BIN / RBASH
Waaris rbash
De tweede keer gebruiken we de
waar is
opdracht, het vindt
rbash
in de map "/ usr / bin".
Beperking van een gebruiker
Laten we
Maak een nieuw gebruikersaccount
genoemd "Minnie." We stellen hun shell in om de beperkte shell te zijn met behulp van de
-s
(Shell) optie van de
Useradd
opdracht. We zullen ook
Stel het wachtwoord van het account in
de ... gebruiken
passwd
opdracht en we maken een thuismap voor hen.
De
-P
(ouders) vlag in de
Mkdir
commando vertelt
Mkdir
Om de doelmap en eventuele mappen die het nodig heeft om ook te maken. Dus door de map "/ Home / Minnie / Bin" te maken, maken we tegelijkertijd de map "/ Home / Minnie".
Sudo UserAdd Minnie -S / Bin / Rbash
SUDO PASSWD MINNIE
SUDO MKDIR -P / HOME / MINNIE / BIN
Wanneer Minnie inlogt, wordt ze in een beperkte shell uitgevoerd.
CD
Ze kan opdrachten niet oproepen die een voorwaartse slash moeten opnemen "
/
"
/ usr / bin / ping
Ze kan echter nog steeds commando's uitvoeren die op het pad worden gevonden.
Ping
Dat is niet het gedrag dat je misschien hebt verwacht, en het is zeker niet wat we willen. Om de beperkingen verder aan te scherpen, moeten we het pad veranderen dat de Shell van Minnie zal gebruiken om opdrachten te zoeken.
Aanscherping van de beperkingen
Toen we Minnie's Home Directory "/ Home / Minnie" hebben gemaakt, hebben we ook een map "/ Home / Minnie / Bin" gemaakt. Dit is waar die map in het spel komt.
We gaan Minnie's ".bash_profile" -bestand bewerken en haar pad instellen om alleen naar die map te wijzen. We zullen Minnie's ".bash_profile" -bestand ook beperken, zodat alleen root het kan bewerken. Dat betekent dat er geen andere gebruiker dat bestand kan bewerken en haar pad kan wijzigen.
Sudo Gedit /home/Minnie/.Bash_Profile
Bewerk het bestaande "pad =" of voeg de volgende regel toe:
Pad = $ Home / Bin
Bewaar het bestand. We zullen
Wijzig de eigenaar van het bestand
om te rooten met behulp van de
gekoesterd
commando en
Wijzig de bestandsmachtigingen
de ... gebruiken
chmod
opdracht. Alleen de root-gebruiker 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 de gebruiker Minnie inlogt, wijst haar pad naar een enkele map.
Onze beperkte gebruiker Minnie kan alleen Bash-ingebouwde opdrachten gebruiken zoals
echo
,
alias
, en
uitloggen
. Ze kan niet eens gebruiken
ls
!
LS
We moeten onze wurggreep een beetje losmaken als we willen dat ze helemaal niets nuttigs kunnen doen. We maken enkele symbolische koppelingen van Minnie's "Bin" -map naar de opdrachten 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 volgende inlogt, zal ze vinden dat ze de Bash-ingebouwde opdrachten kan gebruiken, plus die opdrachten die zijn gekoppeld.
LS
Pinky Dave
Uptime
Beperking van bestaande gebruikers
We hebben Minnie als een nieuwe gebruiker gemaakt. Tot
verander de schaal van een bestaand
Gebruiker, we kunnen de
-s
(Shell) optie van de
usermod
opdracht.
Sudo UserMod -S / Bin / Rbash Mary
Je kunt de
minder
Opdracht op het bestand "/ etc / passwd" om snel te zien welke schaal is ingesteld als de standaardschaal van een gebruiker.
Minder / etc / passwd
We kunnen zien dat de gebruiker Maria de beperkte shell zal gebruiken wanneer zij vervolgens inlogt.
Vergeet niet om de andere wijzigingen toe te passen om hun te beperken
$ Pad
Milieuvariabele en om de opdrachten in te stellen die u wilt dat de gebruiker Maria kan uitvoeren.
Scripts beperken
Een regelmatige, onbeperkte gebruiker kan scripts lanceren die worden uitgevoerd in een beperkte shell. Kopieer de volgende lijnen en plak ze in een editor. Sla het bestand op als "Beperkt.SH" en sluit de editor.
#! / Bin / bash # Script start in normale bash shell echo "## in onbeperkte modus! ##" echo echo "Huidige map:` pwd` echo "Wisseldirectory" cd / usr / share echo "nu in de directory:` pwd` " echo "Veranderen naar thuisgids" CD ~ echo "nu in de directory:` pwd` " # Instelling Beperkte modus set -r echo echo "## in beperkte modus! ##" echo echo "Huidige map:` pwd` Echo "Wisseldirectory to / Home /" CD / Home echo "nog steeds in de directory:` pwd` " echo echo "probeert een andere shell te starten" / bin / bash echo echo "Proberen om de opdrachtuitvoer te redden" LS -L $ HOME & GT; my_files.txt cat my_files.txt echo EXIT 0
We moeten de
chmod
commando met de
+ x
(Execute) vlag om het uitvoerbare bestand van het script te maken.
CHMOD + X Beperkt.SH
Het eerste deel van het script loopt in een normale schaal.
./ Beperkt.SH
Het tweede deel van het script - het bit na de line-runs "SET -R" in een beperkte schaal.
Geen van de poging tot acties slagen in het beperkte deel van het script.
Een volledig script kan worden gemaakt om in een beperkte shell te lopen door toe te voegen
-R
naar de eerste regel:
! # / Bin / bash -r
Onthoud Houdini
Beperkte schelpen zijn handig, maar niet helemaal onfeilbaar. Een voldoende bekwame gebruiker kan mogelijk aan hen ontsnappen. Maar indien uchter gebruikt, zijn ze een nuttige manier om een reeks beperkingen voor een bepaald account vast te stellen.