GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Blockieren Sie bestimmte Befehle in Linux für bestimmte Benutzer

Ich weiß nicht, wie ich es mit Bash machen soll, aber ich kenne eine andere Shell, die die Benutzerumgebung einschränkt:lshell (eingeschränkte Shell).

Ein kurzer Überblick über die Konfiguration

Lshell wird über eine INI-Datei konfiguriert. Standardmäßig enthält es eine Whitelist mit zulässigen Befehlen, kann jedoch einfach so konfiguriert werden, dass Benutzern die Verwendung eines bestimmten Befehls untersagt wird.

Diese Konfiguration (Standard-conf /etc/lshell.conf ) verbietet Benutzer foo von der Verwendung von mkdir :

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

Um ein Benutzerkonto so zu konfigurieren, dass es standardmäßig lshell verwendet, müssen Sie:

 chsh -s /usr/bin/lshell foo

Lshell kann mehr, wie:

  • 3 Granularitätsebenen:Benutzer, Gruppe, alle.
  • Kann den Zugriff auf bestimmte Pfade im System einschränken.
  • Kann die Verwendung bestimmter Zeichen einschränken (wie | ).
  • Kann die Verwendung bestimmter Befehle nur über SSH einschränken.

Und mehr.

Update 1# Testergebnis hinzugefügt:

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

Die Art und Weise, wie ich diese Art von Einschränkungen normalerweise implementiere, erfordert, dass mehrere Bedingungen erfüllt sind, sonst kann die Einschränkung leicht umgangen werden:

  • Der Benutzer gehört nicht zu wheel Gruppe, die einzige, die berechtigt ist, su zu verwenden (über PAM erzwungen).
  • Der Benutzer erhält einen ordnungsgemäß gesicherten rbash mit einem schreibgeschützten PATH, der auf einen privaten ~/bin zeigt , diese ~/bin/ Verzeichnis enthält Links zu einfachen Dienstprogrammen:

    $ 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*
    
  • dem Benutzer wird eine eingeschränkte, schreibgeschützte Umgebung gegeben (denken Sie an Sachen wie LESSSECURE , TMOUT , HISTFILE Variablen).

  • der Benutzer wird dem SELinux-Benutzer staff_u zugeordnet und über sudo Rechte erhalten, um Befehle als anderer Benutzer auszuführen .
  • /home des Benutzers , /tmp und möglicherweise /var/tmp werden über /etc/security/namespace.conf mehrfach instanziiert :

    /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
    

    Außerdem /etc/security/namespace.init macht alle Skelettdateien für den Benutzer schreibgeschützt und Eigentum von root .

So können Sie auswählen, ob $USER kann mkdir ausführen in eigener Sache (über einen Link im privaten ~/bin Verzeichnis, bereitgestellt über /etc/skel , wie oben erklärt), im Namen anderer Benutzer (über sudo ) oder gar keine.


Fügen Sie eine Dummy-Gruppe hinzu, fügen Sie den Benutzer zu dieser Gruppe hinzu, chown root:somegroup /bin/mkdir , chmod g-x /bin/mkdir . Beachten Sie, dass dies davon abhängt, dass der Benutzer seine Gruppen nicht ändern kann. IIRC dies gilt für GNU/Linux, aber nicht für einige andere Unices.


Linux
  1. 20 wichtige Linux-Befehle für jeden Benutzer

  2. So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

  3. So deaktivieren Sie die Remote-Anmeldung für Root-Benutzer auf einem Linux-Computer

  4. Linux-su-Befehl

  5. Login-Befehlsbeispiele in Linux

Linux-Tutorial für adduser/addgroup-Befehle für Anfänger (7 Beispiele)

Linux-ID-Befehls-Tutorial für Anfänger (5 Beispiele)

Linux-Chage-Befehl zum Festlegen der Kennwortalterung für Benutzer

So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

su-Befehl unter Linux

Wie deaktiviere ich die SSH-Anmeldung für den Root-Benutzer in Linux?