Představte si tento scénář. Chcete uživateli umožnit provádět pouze určité úkoly a provádět určité příkazy. Uživatel by neměl měnit proměnné prostředí/cesty. Nemůže navštěvovat jiné adresáře kromě svého domovského adresáře a nemůže se přepínat na jiné uživatele atd. Uživatel může provádět pouze několik příkazů přidělených správcem systému. Je to možné? Ano! Zde je Restricted Shell přichází na pomoc. Pomocí Restricted Shell můžeme snadno omezit přístup uživatelů do systému Linux. Jakmile uvedete uživatele do omezeného režimu shellu, mohou provádět pouze omezenou sadu příkazů. V tomto krátkém tutoriálu si povíme, jak to udělat v Linuxu. Testoval jsem tuto příručku na minimálním serveru CentOS 7. Bude však fungovat na většině distribucí podobných Unixu.
Co je to Restricted Shell?
Nejprve mi dovolte objasnit, co přesně Restricted Shell je. Není to samostatný shell jako Bash, Korn Shell atd. Pokud spustíte jakýkoli existující shell pomocí voleb "rbash", "--restricted", "-r", stane se z něj omezený shell. Bourne shell lze například spustit jako omezený shell příkazem bsh -r a shell Korn pomocí příkazu ksh -r .
Omezené prostředí omezí uživatele ve spouštění většiny příkazů a ve změně aktuálního pracovního adresáře. Restricted Shell uvalí na uživatele následující omezení:
- Neumožní vám spustitcd příkaz. Takže nemůžete nikam jít. Můžete jednoduše zůstat v aktuálním pracovním adresáři.
- Neumožní vám upravit hodnoty $PATH , $SHELL , $BASH_ENV nebo $ENV environmentální proměnné.
- Neumožní vám spustit program, který obsahuje znak /(lomítko). Nemůžete například spustit /usr/bin/uname nebo ./uname příkaz. Můžete však provést příkaz uname. Jinými slovy, máte povoleno spouštět příkazy pouze v aktuální cestě.
- Výstup nelze přesměrovat pomocí „ > “, „ >| “, „ <> “, „ >& “, „ &> “ a „ >> ’ operátory přesměrování.
- Neumožní vám opustit omezený režim prostředí ve skriptech.
- Neumožní vám vypnout omezený režim prostředí pomocí ‘set +r‘ nebo „nastavit +o omezené“ .
To může být velmi užitečné, když velký počet uživatelů používá sdílený systém. Pokud tedy chcete uživatelům povolit spouštění pouze konkrétních příkazů, Restricted Shell je jedním ze způsobů, jak toho dosáhnout.
Omezit přístup uživatelů k systému Linux pomocí omezeného prostředí
Nejprve vytvořte symbolický odkaz s názvem rbash z Bash, jak je znázorněno níže. Následující příkazy by měly být spouštěny jako root uživatel.
# ln -s /bin/bash /bin/rbash
Dále vytvořte uživatele s názvem "ostechnix" s rbash jako jeho/její výchozí přihlašovací shell.
# useradd ostechnix -s /bin/rbash
Nastavte heslo pro nového uživatele.
# passwd ostechnix
Vytvořte přihrádku adresář v domovské složce nového uživatele.
# mkdir /home/ostechnix/bin
Nyní musíme určit, které příkazy může uživatel spouštět.
Zde nechám uživatele spustit pouze "ls" , "mkdir" a "ping" příkazy. Můžete přiřadit libovolné příkazy dle vašeho výběru.
Chcete-li tak učinit, spusťte následující příkazy:
# ln -s /bin/ls /home/ostechnix/bin/ls
# ln -s /bin/mkdir /home/ostechnix/bin/mkdir
# ln -s /bin/ping /home/ostechnix/bin/ping
Nyní chápete, proč jsme v předchozím kroku vytvořili adresář „bin“. Uživatelé nemohou spouštět žádné příkazy kromě výše uvedených tří příkazů.
Dále zabraňte uživateli v úpravě .bash_profile .
# chown root. /home/ostechnix/.bash_profile
# chmod 755 /home/ostechnix/.bash_profile
Upravte /home/ostechnix/.bash_profile soubor:
# vi /home/ostechnix/.bash_profile
Upravte proměnnou PATH jako níže.
[...] PATH=$HOME/bin [...]
Stiskněte ESC a zadejte :wq uložte a zavřete soubor.
Nyní, když se uživatel přihlásí, poběží omezený shell (rbash) jako výchozí přihlašovací shell a přečte .bash_profile , který nastaví PATH na $HOME/bin takže uživatel bude moci spustit pouze ls , mkdir a ping příkazy. Omezený shell uživateli nedovolí změnit PATH a oprávnění k .bash_profile nedovolí uživateli změnit prostředí tak, aby obcházelo omezení během příští relace přihlášení.
Ověřování Rbash
Nyní se odhlaste od uživatele root a přihlaste se zpět pomocí nově vytvořeného uživatele, tj. v našem případě ostechnix.
Poté spusťte některé příkazy a zkontrolujte, zda to funguje nebo ne. Například chci vymazat Terminál.
Abych to udělal, spustil jsem:
$ clear
Ukázkový výstup:
-rbash: clear: command not found
Nemůžete použít cd příkaz pro přechod do jiného adresáře.
$ cd /root
Ukázkový výstup:
-rbash: cd: restricted
Výstup nelze přesměrovat ani pomocí operátoru>.
$ cat > file.txt
Ukázkový výstup:
-rbash: file.txt: restricted: cannot redirect output
Uživatel "ostechnix" smí používat pouze vámi přidělené příkazy (samozřejmě správcem systému). V našem případě může uživatel spouštět příkazy ls, mkdir a ping.
$ ls
$ mkdir ostechnix
$ ping -c 3 google.com
Kromě těchto tří příkazů nemůže uživatel provádět nic. Je zcela pod vaší kontrolou.
Doporučené čtení:
- Jak monitorovat aktivitu uživatele v systému Linux
Povolit uživatelům nové příkazy
Pokud chcete uživateli přiřadit více příkazů, odhlaste se od aktuálního uživatele a znovu se přihlaste do rootu znovu uživatele a přiřaďte příkazy, jak je uvedeno níže.
Chcete-li například umožnit uživateli (tj. ostechnix) spouštět rm spusťte následující příkaz jako root uživatel.
# ln -s /bin/rm /home/ostechnix/bin/rm
Nyní může uživatel používat příkaz "rm".
Více podrobností naleznete v manuálových stránkách pod odkazem níže.
- Manuálové stránky Rbash