Wie man Benutzerbefehle in Linux einschränkt

8

Ich habe einen Benutzer in einer Gruppe: "demo".

Ich möchte die Richtlinie festlegen, dass diese Benutzer nur 10 Befehle wie "vim", "nano", "cd" und so weiter ausführen können.

Oder legen Sie fest, dass die Richtlinie Zugriff auf alle Befehle mit Ausnahme der Befehle "ssh" und "cat" haben soll.

Danke

    
mortezaipo 01.02.2014, 13:32
quelle

3 Antworten

12

Es gibt viele verschiedene Möglichkeiten, dies zu erreichen. Ich werde eine von mehreren möglichen Lösungen auflisten.

Ich würde vorschlagen, mehrere verschiedene Schutzebenen zu verwenden, um zu verhindern, dass Benutzer Befehle ausführen, auf die sie nicht zugreifen dürfen. Alle Richtungen hier setzen voraus, dass Benutzer ihr eigenes /home/[username] -Verzeichnis haben, dass ihre Shell /bin/bash ist und Sie möchten, dass sie die bash-Shell verwenden, wenn sie sich beim System anmelden.

1) Ändern Sie die Verzeichnisberechtigungen, sodass nur der Benutzer den Inhalt seines Ausgangsverzeichnisses bearbeiten kann

chmod 755 /home/[username]

2) Entfernen Sie die .bashrc -Datei des Benutzers

rm /home/[username]/.bashrc Diese Website enthält weitere Informationen, warum dies eine gute Idee ist um die .bashrc in dieser Situation zu löschen.

3) Erstellen Sie ein .bash_profile und fügen Sie "sichere" Aliase für alle Befehle hinzu, die Sie deaktivieren möchten

./ bash_profile Dateibeispiel

%Vor%

A Weitere Informationen finden Sie in der vollständigen Liste der Bash-Befehle . Sie müssen sicherstellen, dass der Befehl alias alias="printf ''" der letzte Befehl in der Liste ist. Andernfalls verlieren Sie die Fähigkeit, alle diese Befehle zu übernehmen.

4) Deaktivieren Sie Shell-Befehle in vi, indem Sie den Befehl vi in ​​den eingeschränkten Modus umwandeln Die Syntax lautet alias vi="vi -Z" . Weitere Informationen finden Sie unter auf dieser Website .

5) Ändern Sie den Besitz des .bash_profile des Benutzers in root und chown root:root /home/[username]/.bash_profile

6) Entfernen Sie Schreibrechte für% des Benutzers .bash_profile
chmod 755 /home/[username/.bash_profile]

7) Ändern Sie abschließend die Bash der Nutzer in den eingeschränkten Bash-Modus so dass sie Verzeichnisse nicht wechseln können (wenn Sie keinen eingeschränkten Bash-Modus auf Ihrem System haben, dieser Link hilft Ihnen und gibt Ihnen weitere Informationen)
chsh -s /bin/rbash [username]

Wenn sich die Benutzer jetzt anmelden, können sie keine Verzeichnisse mehr ändern. Alle Befehle, die nicht von ihnen verwendet werden sollen, geben die gleichen Informationen aus, als hätte der Benutzer die Taste [ENTER] ohne Befehl gedrückt angegeben und Ihre /bin/bash -Funktionen bleiben erhalten.

Abhängig davon, welche Funktionen Sie auf diese Weise auswählen oder nicht, können Benutzer dennoch einige der von Ihnen implementierten Steuerelemente umgehen. Da wir jedoch einige Sicherheitspuffer implementiert haben, müsste der Benutzer wirklich über Computersysteme Bescheid wissen, die gefährlich sind.

Wenn Sie diese Aliase direkt in die einzelnen Benutzer .bash_profile einfügen, könnten Sie Schwierigkeiten damit haben, zu bestimmen, welche Funktionen Aliasnamen enthalten sollen und welche nicht Um den Alias ​​auf etwas zu ändern, müssten Sie alle einzeln ändern. Da Benutzer vim oder vi zum Anzeigen von Dateien verwenden können, können sie auch den Inhalt ihrer .bash_profile sehen und verstehen, welche Einschränkungen sie haben und nicht haben.

Um das zu umgehen, würde ich vorschlagen.

1) Alle Aliase in ein Verzeichnis einfügen, auf das die Benutzer nicht zugreifen können (fügen Sie hier den Inhalt von .bash_profile ein)

/[path_to_file]/startup_functions_for_beginners.sh

2) Die Aliase in ihre .bash_profile

einordnen

verbessertes ./bash_profile Dateibeispiel

%Vor%

Das sollte Sie auf den Weg bringen, aber denken Sie daran, dass es fast immer Möglichkeiten gibt, Beschränkungen zu umgehen.

Fühlen Sie sich auch frei, die Informationen in dieser Antwort an Ihre Bedürfnisse anzupassen. Diese können auf jeden Fall mit einer Reihe anderer Einschränkungen kombiniert werden.

F: Ich brauche Benutzer, die Zugriff auf fg und bg haben, aber ich möchte nicht, dass sie auf aptitude oder bash

zugreifen können %Vor%

Liste der gebräuchlichen Befehle gemäß dieser Harvard-Website (NICHT EXHAUSTIV)

Vorsicht sollte bei den Editoren beachtet werden, da einige die Ausgabe von Shell-Befehlen aus dem Programm heraus erlauben

%Vor%

Alles andere

%Vor%     
Dodzi Dzakuma 08.02.2014, 17:33
quelle
7

Ich weiß, dass ich zu spät zur Party komme, zwei Jahre zu spät, aber ich bin gerade auf einen Workaround für Ihre Situation gestoßen. Ich hatte einen Benutzer, nennen wir ihn "test1", der einige Befehle wie "su" benötigt, aber der Rest sollte verfügbar sein. Um diese Einschränkung anzuwenden, habe ich gerade ACL (vorausgesetzt, Sie haben acls auf Ihrem FS aktiviert) auf der Binärdatei hinter dem Befehl selbst wie folgt:

setfacl -mu: test1: r / bin / su

Der obige Befehl ändert die Berechtigungen für diese spezifische Binärdatei, die eigentlich der Befehl "su" ist, um dem Benutzer "test1" nur Lesezugriff auf diese Datei zu gewähren. Wenn also der Benutzer "test1" versucht, den Befehl "su" auszuführen, kann er das Skript nicht ausführen und erhält "Permission denied".

Führen Sie einfach "which command_you_want_restricted" aus, um die Datei dahinter zu sehen.

Ich habe diese Methode auf Red Hat 6.5 & amp; 7 und es betrifft nur Benutzer "test1", alle anderen Benutzer können weiterhin "su" nach Belieben ausführen.

Was Ihre spezielle Anfrage betrifft:

"Oder legen Sie fest, dass die Richtlinie Zugriff auf alle Befehle mit Ausnahme der Befehle" ssh "und" cat "hat."

Sie können dasselbe mit ACLs für die Gruppe "demo" in den von Ihnen gewünschten Befehlsbinärdateien machen, aber ich habe dies nicht mit Gruppen getestet und schlage vor, dass Sie es vorher auf einer Test-VM versuchen.

Grüße,

    
AnythingIsFine 04.11.2016 10:25
quelle
5

Die Standardantwort wäre, eine eingeschränkte Shell zu verwenden, die den letzten Eintrag in der Passwortdatei für Benutzer in dieser Gruppe darstellt. Wie Sie externe Befehle von Dingen wie vim ausführen können: Ссылка

Das scheint keine gute Idee zu sein, wenn Sie versuchen, eine eingeschränkte Umgebung zu erstellen. Das erste, was ein Benutzer tun könnte, ist, die Befehle im obigen Link zu verwenden, um /bin/bash auszuführen, und er wäre außerhalb der eingeschränkten Umgebung.

Eine bessere Idee wäre es, den Login eines jeden Benutzers in ein Chroot-Gefängnis oder einen leichtgewichtigen Container zu legen (wenn sie also etwas kaputt machen, ist es ihr eigener Container). Werfen Sie einen Blick auf Docker - Ссылка .

    
abligh 01.02.2014 13:38
quelle

Tags und Links