GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit přístup uživatelů k systému Linux

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

Linux
  1. Jak zablokovat nebo zakázat normální přihlášení uživatele v Linuxu

  2. Jak změnit identitu systému Linux

  3. Jak změnit proměnnou PATH v Linuxu

  1. Jak změnit výchozí prostředí v Linuxu

  2. Jak změnit výchozí shell v Linuxu

  3. Jak omezit uživatelské příkazy v Linuxu

  1. Jak používat příkaz usermod v Linuxu

  2. Jak zkontrolovat verzi OS a Linuxu

  3. Linux – Jak omezit přístup k internetu pro konkrétního uživatele v síti LAN pomocí Iptables v Linuxu?