BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Limitierte Benutzershell verwenden

Möchte man Benutzern eine Shell auf einem Rechner zur Verfügung stellen, jedoch festlegen, dass nur gewisse Befehle verwendet werden können, so kann man dazu lshell verwenden. Im FreeBSD Portbaum findet man lshell unter shells/lshell:

# cd /usr/ports/shells/lshell && make install clean

Nun kann die Shell der Benutzer auf lshell gewechselt werden:

# pw usermod -s /usr/local/bin/lshell -n <Benutzer>

In der Datei /usr/local/etc/lshell.conf werden unter allowed die Befehle angegeben, welche von den lshell Benutzern verwendet werden dürfen. Unter forbidden werden Zeichen oder Befehle eingetragen, welche die Benutzer nicht verwenden dürfen. Unter aliases können Abkürzungen für Befehle angegeben werden:

[default]
allowed         : ['ls','echo','cd','ll']
forbidden       : [';', '&', '|','`','>','<']
aliases         : {'ll':'ls -l'}

Meldet sich ein lshell-Benutzer an, kann dieser mit ? oder help seine erlaubten Befehle ansehen. Verwendet der Benutzer ein verbotenes Kommando, so wird er nach dem zweiten Versuch automatisch abgemeldet:

# ssh <Benutzer>@<Server>

You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands
testbenutzer:~$ ?
cd  echo  exit  help  ll  ls
testbenutzer:~$ make
*** unknown syntax: make
testbenutzer:~$ echo test > datei
*** forbidden synthax -> "echo test > datei"
*** You have 0 joker(s) left, before getting kicked out.
This incident has been reported.
testbenutzer:~$ echo test2 > datei
*** forbidden synthax -> "echo test2 > datei"
- Kicked out -
Connection to <server> closed.

Auch können Einstellungen pro Benutzergruppe gemacht werden. Folgendes Beispiel entfernt der Gruppe limited die Berechtigung für ll, fügt jedoch cat zu den erlaubten Befehlen hinzu:

[grp:limited]
allowed         : -['ll'] + ['cat']

Möchte man die Berechtigungen für einen bestimmten Benutzer anpassen, erstellt man eine weitere Sektion in der Konfigurationsdatei, setzt den Benutzernamen in eckige Klammern und fügt danach die Konfiguration für den entsprechenden Benutzer hinzu. Mehr Informationen zu lshell findet man in der Manpage lshell(1).

 Permalink