GNU/Linux >> Znalost Linux >  >> Linux

Blokovat konkrétní příkaz v Linuxu pro konkrétního uživatele

Nevím, jak to udělat s bashem, ale znám jiný shell, který omezuje uživatelské prostředí:lshell (limited shell).

Rychlý přehled konfigurace

Lshell se konfiguruje pomocí souboru INI. Ve výchozím nastavení obsahuje seznam povolených příkazů, ale lze jej snadno nakonfigurovat tak, aby uživateli zakázal používat konkrétní příkaz.

Tato konfigurace (výchozí conf /etc/lshell.conf ) zakazuje uživateli foo z použití mkdir :

[foo]
allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']

Chcete-li nakonfigurovat uživatelský účet tak, aby ve výchozím nastavení používal lshell, musíte:

 chsh -s /usr/bin/lshell foo

Lshell umí více, například:

  • 3 úrovně podrobnosti:uživatel, skupina, vše.
  • Může omezit přístup k určitým cestám v systému.
  • Může omezit použití určitých znaků (např. | ).
  • Může omezit použití určitých příkazů pouze přes SSH.

A další.

Aktualizace 1# Přidán výsledek testu:

rahul:~$ which bash
/bin/bash
rahul:~$ dd if=$(which bash) of=my_bash
*** forbidden syntax: dd if=$(which bash) of=my_bash
rahul:~$ bash
*** forbidden command: bash
rahul:~$ cp /bin/bash my_bash
*** forbidden path: /bin/bash
rahul:~$ /bin/bash
*** forbidden command: /bin/bash
rahul:~$ sh
*** forbidden command: sh
rahul:~$ dash
*** forbidden command: dash
rahul:~$ env bash
*** forbidden command: env
rahul:~$ cp /bin/mkdir mycreatedir
*** forbidden path: /bin/mkdir

Způsob, jakým obvykle implementuji tento druh omezení, vyžaduje splnění několika podmínek, jinak lze omezení snadno obejít:

  • Uživatel nepatří do skupiny wheel skupina, jediná oprávněná používat su (vynuceno prostřednictvím PAM).
  • Uživateli je přiděleno řádně zabezpečené rbash s PATH určenou pouze pro čtení ukazující na soukromý ~/bin , tento ~/bin/ adresář obsahuje odkazy na jednoduché nástroje:

    $ ll ~/bin
    total 0
    lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
    lrwxrwxrwx. 1 root dawud  7 Sep 17 08:58 df -> /bin/df*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
    lrwxrwxrwx. 1 root dawud  8 Sep 17 08:58 env -> /bin/env*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
    lrwxrwxrwx. 1 root dawud  9 Sep 17 08:58 grep -> /bin/grep*
    lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
    lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
    lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
    lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
    
  • uživateli je poskytnuto omezené prostředí pouze pro čtení (přemýšlejte o věcech jako LESSSECURE , TMOUT , HISTFILE proměnné).

  • uživatel je namapován na uživatele SELinux staff_u a udělená práva k provádění příkazů jako jiný uživatel podle potřeby prostřednictvím sudo .
  • /home uživatele , /tmp a možná /var/tmp jsou polyinstanciovány pomocí /etc/security/namespace.conf :

    /tmp       /tmp/.inst/tmp.inst-$USER-     tmpdir:create   root
    /var/tmp   /tmp/.inst/var-tmp.inst-$USER- tmpdir:create   root
    $HOME      $HOME/$USER.inst/              tmpdir:create   root
    

    Také /etc/security/namespace.init dělá všechny základní soubory pouze pro čtení pro uživatele a vlastní je root .

Tímto způsobem můžete zvolit, zda $USER může spustit mkdir vlastním jménem (přes odkaz v soukromém ~/bin adresář, poskytovaný prostřednictvím /etc/skel , jak je vysvětleno výše), jménem jiného uživatele (prostřednictvím sudo ) nebo vůbec žádné.


Přidejte fiktivní skupinu, přidejte uživatele do této skupiny, chown root:somegroup /bin/mkdir , chmod g-x /bin/mkdir . Všimněte si, že to závisí na tom, že uživatel nebude moci upravovat své skupiny. IIRC to platí v GNU/Linuxu, ale ne v některých jiných Unicích.


Linux
  1. Jak zakázat konkrétní příkaz pro konkrétního uživatele v Linuxu

  2. Příklady příkazů adduser v Linuxu

  3. Příklady příkazů sudo v Linuxu

  1. 20 základních příkazů Linuxu pro každého uživatele

  2. Jak nastavit oprávnění Sudo pro uživatele v Linuxu

  3. Jak zakázat vzdálené přihlášení pro uživatele root na počítači se systémem Linux

  1. 12 Příklady IP příkazů pro uživatele Linuxu

  2. Linux su příkaz

  3. Login Příklady příkazů v Linuxu