• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Benutzer einsperren

Constan

Member
Ich möchte gerne einen Benutzer einsperren :

1. Benutzer darf nicht höher Hinaus als sein Homeverzeichnis
/home/gs also darf er nicht in den Ordner /home, wie mach ich das?

2. Benutzer soll nur seine Prozesse beenden dürfen keine von anderen Benutzern (über den Befehl "kill").

3. Benutzer soll über "ps aux" nur seine Prozesse angezeigt bekommen.

4. Wie kann ich eine Liste erstellen in der einige Befehle drin stehen die der Benutzer nur ausführen darf. (Also ich möchte gerne das alle Befehle gesperrt sind ausser diese die ich ihm erlauben will).

Ist das möglich ohne großen aufwand?
Kann mir bitte einer diese Punkte bearbeiten (Punkt 1 am wichtigsten).

danke schon mal im Vorraus.
 
Schau dir auch mal "rbash" an.
Als login-Shell sollte der User dann weniger berechtigungen haben.

Ich kann aber nichts über die "echte" Sicherheit von rbash sagen.

Haveaniceday
 

abgdf

Guru
Und wenn man alle Verzeichnisse einem neuen Benutzer übertragen würde mit einer Gruppe, in der der Eingesperrte nicht ist, und dann alle Dateirechte entsprechend änderte ?
 

regexer

Advanced Hacker
haveaniceday schrieb:
Schau dir auch mal "rbash" an.
Als login-Shell sollte der User dann weniger berechtigungen haben.
rbash oder restricted bash ist ein gutes Stichwort. Punkt 1 und 2 sollten meines Wissens hier ohne weiteres möglich sein.

Zu Punkt 3 bin ich echt überfragt. Geht das? Würde mich auch interessieren...
 

regexer

Advanced Hacker
notoxp schrieb:
Zu Punkt 3 bin ich echt überfragt. Geht das? Würde mich auch interessieren...
Zu Punkt 3 und 4 ist mir noch etwas eingefallen. Ich habe es selbst nicht ausprobiert - es käme also auf einen Versuch an.

Mit rbash darf der Benutzer weder Verzeichnisse wechseln, noch Scripte oder Befehle ausführen, die er irgendwie mit Slash (=anderes Verzeichnis) aufrufen müsste. Die binaries, die über $PATH gefunden werden, hat der Benutzer aber im Zugriff. $PATH selbst ist aus Sicht des Benutzers nicht änderbar.

Man könnte nun versuchen, $PATH komplett leer zu lassen, und nur über aliase entsprechende binaries wie ls,ps usw. zuzulassen. ps könnte man per alias oder functions standardmäßig als Parameter die Benutzerkennung mitgeben. (Frägt sich nur, ob man diese Nutzerkennung mit -a wieder überschreiben kann).
Zur Restriktion von shell builtins (echo, set, for, ...) könnte man ebenfalls mit aliasen oder functions arbeiten. Wenn man z.B. echo verbieten will, müsste man den alias "echo" definieren und selbigen ins Leere laufen lassen.

Eine andere denkbare Variante wäre übrigens, ein eigenes Verzeichnis mit softlinks zu den erlaubten Binaries zu erstellen. Dieses Verzeichnis könnte man als alleinigen PATH definieren.

Wie gesagt: Das sind alles nur Ideen. Ich weiß nicht, ob es funktioniert. Bitte ausprobieren...
 

abgdf

Guru
Wenn das so ist, könnte man für den "Gefangenen" doch ein Skript anlegen, das zwar "px" heißt, aber das echte "px" nur mit bestimmten Optionen aufruft ...

Gruß
 

regexer

Advanced Hacker
abgdf schrieb:
Wenn das so ist, könnte man für den "Gefangenen" doch ein Skript anlegen, das zwar "px" heißt, aber das echte "px" nur mit bestimmten Optionen aufruft ...
Zum Beispiel. Hat es jemand ausprobiert?
 
Zu 3.: Die Informationen kommen aus /proc/ . ps ist also
nicht wirklich der Grund warum diese Daten zu sehen sind.

Ein "ls /proc" oder andere Befehle zeigen immer noch Befehle an.

zu 4. mit "rbash"

- Verzeichnis /myrbin anlegen
- Nur gewollte Befehle als hardlink in /myrbin/ anlegen.
Beispiel: ln /bin/ls /myrbin/ls
- PATH=/myrbin + rbash starten

Damit sollte gehen.

Als "Lösung" für 3. sollte chroot gehen.


Haveaniceday
 

regexer

Advanced Hacker
haveaniceday schrieb:
Zu 3.: Die Informationen kommen aus /proc/ . ps ist also
nicht wirklich der Grund warum diese Daten zu sehen sind.
Schon richtig, doch haben nur die Owner Leserechte auf die entsprechenden Prozesse. Oder?
 
Schon richtig, doch haben nur die Owner Leserechte auf die entsprechenden Prozesse. Oder?

Schau mal als user mal unter /proc/<pidvoneinemrootprocess>
Da kannst du z.B. cmdline von einem Rootprozess sehen.

Zumindest bei mir bei SuSE 10.2 ist das so.
 

regexer

Advanced Hacker
haveaniceday schrieb:
Zumindest bei mir bei SuSE 10.2 ist das so.
OK, ich habe gerade kein SuSE zur Hand. Bei Solaris ist das nicht so. Wäre interessant, wo hier die Prozess-Information her kommt. Aber das ist eine andere Geschichte.
 
Oben