LShell oder Limited Shell ist in Python geschrieben, um den Benutzer auf bestimmte Befehle und Verzeichnisse einzuschränken. Sie können eine Benutzerumgebung mit eingeschränktem Zugriff erstellen, Sie können auch Deaktivierungsbefehle über den SSH-Zugriff aktivieren.
Eingeschränkte Shell installieren
Verwenden Sie den folgenden Befehl, um das LShell-Paket auf Ihrem Debian-basierten System zu installieren. Für andere Betriebssysteme müssen Sie das lshell-Paket für Ihre Distribution bei Google suchen.
$ sudo apt-get install lshell
Benutzer zu LShell wechseln
Legen Sie nun die LShell als Standard-Shell für Benutzer fest, für die Sie erforderlich sind. Zum Beispiel, um die Shell des Benutzers sarah zu ändern.
$sudo chsh sarah Changing the login shell for sarah Enter the new value, or press ENTER for the default Login Shell [/bin/lshell]:/usr/bin/lshell
Sie können die lshell auch während der Erstellung des Benutzerkontos wie folgt als Standard-Shell für Benutzer festlegen.
$ sudo adduser --shell /usr/bin/lshell raj
LShell konfigurieren
Beginnen Sie nun mit der Konfiguration von lshell. Bearbeiten Sie die lshell-Konfigurationsdatei /etc/lshell.conf . Es gibt 4 grundlegende Abschnitte in der Konfigurationsdatei.
[weltweit] : In diesem Abschnitt definieren wir die Einstellungen, die global gelten. Zum Beispiel Protokolle.[Standard] : In diesem Abschnitt legen wir Standardwerte fest, die für alle Benutzer und Gruppen gelten. Die Einstellungen dieses Abschnitts können mit benutzer- und gruppenspezifischen Einstellungen überschrieben werden.[BENUTZERNAME] : In diesem Abschnitt legen wir benutzerspezifische Einstellungen fest. Diese Abschnittseinstellungen gelten nur für Benutzer[grp:GROUPNAME] : In diesem Abschnitt legen wir gruppenspezifische Einstellungen fest. Diese Abschnittseinstellungen gelten für alle Benutzer der Gruppe
A [Standard] profile wird für alle Benutzer angewendet, die lshell verwenden. Sie können [Benutzername] erstellen Abschnitt oder eine Gruppe [grp:groupname] Abschnitt zum Anpassen von benutzer- und gruppenspezifischen Einstellungen.
Die Prioritätsreihenfolge ist Benutzer>> Gruppe>> Standard . Der Benutzerabschnitt hat die höchste Priorität und der Standard hat die niedrigste Priorität.
[global] logpath : /var/log/lshell/ loglevel : 2[default] allowed : ['ls','pwd','cd','cat','cp'] forbidden : [';', '&', '|','`','>','<', '$(', '${'] sudo_commands : ['ls', 'more'] warning_counter : 2 aliases : {'ll':'ls -l', 'vim':'rvim'} prompt : "%[email protected]%h" timer : 0 path : ['/home', '/usr'] env_path : ':/usr/bin/usr/local/bin' env_vars : {'foo':1, 'bar':'helloworld'} scp : 1 # or 0 sftp : 1 # or 0 overssh : ['rsync','ls'] strict : 0 history_file : "/home/%u/.lshell_history"[grp:wheel] warning_counter : 5 overssh : - ['ls'][raj] allowed : 'all' - ['su','rm','mv'] path : ['/etc', '/usr'] - ['/usr/local'] home_path : '/home/raj'[sarah] allowed : + ['ping'] - ['ls'] path : - ['/usr/local'] strict : 1 scpforce : '/home/sarah/uploads/'
Beispielsweise gehören Benutzer „rja“ und Benutzer „sarah“ beide zur UNIX-Gruppe „wheel“:
Gruppenrad:
- Benutzer der Wheel-Gruppe haben einen Warnungszähler von 5
- Benutzern der Radgruppe ist der Befehl „ls“ nicht gestattet.
Benutzer raj:
- Kann auf /etc und /var zugreifen, aber nicht auf /usr/local
- Kann auf alle Befehle in seinem PATH zugreifen, außer Befehle – su, rm, vm
- hat einen Warnungszähler auf 5 gesetzt [Standard]
- hat seinen Home-Pfad auf „/home/raj“ gesetzt
Benutzer Sarah:
- Kann auf /home und /usr zugreifen, aber nicht auf /usr/local
- erlaubt den Standardbefehl „ping“, aber nicht „ls“
- Strenge ist auf 1 gesetzt (er darf keine unbekannten Befehle eingeben)
Optionsname | Erklärung |
---|---|
Protokollverzeichnis (Standard /var/log/lshell/ ) | |
Protokollstufe auf 0, 1, 2, 3 oder 4 setzen (0:keine Protokolle, 1:am wenigsten ausführlich, 4:alle Befehle protokollieren) | |
Protokolldateinamen konfigurieren (Standard ist %u, d. h. username.log) | |
Liste der erlaubten Befehle oder „alle“, um alle Befehle im PATH des Benutzers zuzulassen | |
eine Liste verbotener Zeichen oder Befehle – deny vim, da es erlaubt, lshell zu entkommen | |
eine Liste erlaubter Befehle zur Verwendung mit sudo(8) | |
Anzahl der Warnungen, wenn der Benutzer einen verbotenen Wert eingibt, bevor er die lshell verlässt, zum Deaktivieren auf -1 setzen. | |
Befehls-Alias-Liste (ähnlich der Alias-Direktive von Bash) | |
Einleitungstext zum Drucken (bei Eingabe von lshell) | |
konfiguriere deinen Promt mit %u oder %h (Standard:Benutzername) | |
set sort prompt aktuelle Verzeichnisaktualisierung (Standard:0) | |
ein Wert in Sekunden für den Sitzungstimer | |
Pfadliste, um den Benutzer „geografisch“ einzuschränken | |
Legen Sie den Home-Ordner Ihres Benutzers fest | |
setzen Sie die Umgebungsvariable $PATH des Benutzers | |
eine Pfadliste; alle ausführbaren Dateien in diesem Pfad sind erlaubt | |
Umgebungsvariablen hinzufügen | |
die Verwendung von scp zulassen oder verbieten (auf 1 oder 0 setzen) | |
SCP-Upload verbieten | |
SCP-Download verbieten | |
Zulassen oder Verbieten der Verwendung von sftp (auf 1 oder 0 setzen) | |
Liste der Befehle, die über ssh ausgeführt werden dürfen | |
Strenge der Protokollierung. 1 für einen unbekannten Befehl gilt als verboten und 0 als unbekannt | |
erzwingt Dateien, die über scp gesendet werden, in ein bestimmtes Verzeichnis | |
Maximale Größe der Verlaufsdatei | |
Verlaufsdateinamen festlegen (Standard ist /home/%u/.lhistory) | |
definieren Sie das Skript, das bei der Benutzeranmeldung ausgeführt werden soll |