Wie blockiere ich einen Befehl, zum Beispiel mkdir
für einen bestimmten Benutzer?
Was ich gerade erstellt habe, ist eine Nur-Lese-Funktion, die im Benutzerprofil gespeichert wird ~/.bashrc
/bin/mkdir() {
echo "mkdir command not allow for you"
}
mkdir() {
echo "mkdir command not allow for you"
}
./mkdir() {
echo "mkdir command not allow for you"
}
readonly -f /bin/mkdir
readonly -f mkdir
readonly -f ./mkdir
Prüfung:
rahul@ubuntu:~$ cd /bin/
rahul@ubuntu:/bin$ ./mkdir /home/rahul/ggg
mkdir command not allow for you
rahul@ubuntu:/bin$ cd
rahul@ubuntu:~$ mkdir testing
mkdir command not allow for you
rahul@ubuntu:~$ /bin/mkdir testing
mkdir command not allow for you
Meine Frage ist also, wie dies erreicht werden kann. Gibt es ein Werkzeug dafür?
Update 1 # Wenn der Benutzer jedoch schlau ist, kann er mkdir binary kopieren und umbenennen und verwenden. Wie kann man das erreichen?
linux
security
account-restrictions
restricted-shell
Rahul Patil
quelle
quelle
mkdir
und umbenennen oder sogar die vorhandene Binärdatei kopieren und umbenennen kann. Es gibt auch eine Shell zum Überschreiben von Aliasen und Funktionen.cp /bin/mkdir mkdir2
dann verwenden :(cp -r /usr/local/lib ggg
wird ein Verzeichnis mit dem Namen erstelltggg
(das eine Kopie des Inhalts von/usr/local/lib
, falls vorhanden, enthält, die der Benutzer dann einfach löschen kann). Mit könnenfind / -type d -empty
Sie ein leeres Verzeichnis zum Kopieren suchen.Antworten:
Ich weiß nicht, wie man es mit bash macht, aber ich kenne eine andere Shell, die die Benutzerumgebung einschränkt: lshell (eingeschränkte Shell) .
Ein schneller Überblick über die Konfiguration
Lshell wird über eine INI-Datei konfiguriert. Standardmäßig enthält es eine Whitelist mit zulässigen Befehlen, kann jedoch problemlos so konfiguriert werden, dass der Benutzer keinen bestimmten Befehl verwenden kann.
Diese Konfiguration (Standardeinstellung conf
/etc/lshell.conf
) untersagt dem Benutzer diefoo
Verwendung vonmkdir
:Um ein Benutzerkonto so zu konfigurieren, dass es standardmäßig lshell verwendet, müssen Sie:
Lshell kann mehr:
|
) einschränken .Und mehr.
Update 1 # Hinzugefügtes Testergebnis:
quelle
allowed = 'all' - ['mkdir']
, kannst du nicht einfach ausführenbash
und wieder frei sein?dd if=$(which bash) of=my_bash && chmod u+x my_bash && ./my_bash
. Ich denke, das Problem ist das Fehlen einer restriktiven Standardrichtlinie, dh in diesem Szenario gewähren Sie Berechtigungen standardmäßig, dann verweigern Berechtigungen basierend auf einer Liste, wenn es umgekehrt sein sollte: standardmäßig verweigern, dann gewähren basierend auf Richtlinie .cp
eine Binärdatei zu seinem / ihrem PATH (root
besessenes Verzeichnisrx
für den Benutzer)rbash
erstellen und die Ausführung verhindern./executables
. Beantwortet es Ihre Frage?Die Art und Weise, wie ich diese Art von Einschränkungen normalerweise umsetze, setzt voraus, dass mehrere Bedingungen erfüllt sind. Andernfalls kann die Einschränkung leicht umgangen werden:
wheel
Gruppe, die nur zur Verwendung berechtigt istsu
(erzwungen über PAM).Der Benutzer erhält einen ordnungsgemäß gesicherten
rbash
schreibgeschützten Pfad, der auf einen privaten Pfad verweist~/bin
. Dieses~/bin/
Verzeichnis enthält Links zu einfachen Dienstprogrammen:der Benutzer eine eingeschränkte, read-only - Umgebung gegeben (man denkt an Sachen wie
LESSSECURE
,TMOUT
,HISTFILE
Variablen).staff_u
und erhält die Berechtigung, Befehle als anderer Benutzer wie erforderlich über auszuführensudo
.der Benutzer
/home
,/tmp
und möglicherweise/var/tmp
sind polyinstantiert über/etc/security/namespace.conf
:/etc/security/namespace.init
Legt außerdem fest, dass alle Skelettdateien nur für den Benutzer lesbar sind und Eigentum von sindroot
.Auf diese Weise können Sie auswählen, ob
$USER
die Ausführungmkdir
in eigenem Namen (über einen Link im privaten~/bin
Verzeichnis, bereitgestellt über/etc/skel
, wie oben erläutert), im Namen eines anderen Benutzers (übersudo
) oder überhaupt nicht erfolgen soll.quelle
Fügen Sie eine Dummy - Gruppe, fügen Sie den Benutzer zu dieser Gruppe
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, jedoch nicht für einige andere Unices.quelle
Das Beste, was ich getestet habe, ist die beste und sicherste Methode, Profile.d zu verwenden
Schritt 1 (Erstellen einer Aliasdatei)
Unten stehende Zeilen hinzufügen:
Speichern und beenden
Schritt 2 (Profillader erstellen)
/etc/profile.d/ Dieser Speicherort enthält Dateien für die Bash-Vervollständigung
Fügen Sie unter den Dateien folgende Zeilen ein: Diese Zeilen blockieren die genannten Befehle für Benutzer unter ""
speichern und Beenden
Jetzt beenden und neu anmelden
Grüße, -Mansur
quelle
/etc/profile.d/
nicht istbash
Abschluss , ist es , wo wir Platz Anmeldesitzung Anpassungen für Benutzer mit POSIX-wie Login - Shells, es ist so typisch nicht , wobash
alias Anpassung (die eher würden in/etc/bash.bashrc
würden) gehen und es sollte eine POSIX - Shell - Syntax (so typisch, hat.
stattdessen vonsource
und=
statt==
).installiere sudoers und versuche dort zu konfigurieren wessen benutzer und welchen befehl.
quelle
sudo
.