SchlimmerFinger Geschrieben 1. Februar 2010 Geschrieben 1. Februar 2010 Hallo, ich suche nach einer Lösung, mit der man für einen bestimmten User die Ausführung der Befehle über SHELL blocken kann, aber kein LOGOUT darf erzwungen werden. Nur halt, so in etwa, sobald er versucht was auszuführen, kriegt er die Meldung, dass er das nicht darf, oder halt das der Befehl erst gar nicht ausgeführt wird. Zitieren
bigvic Geschrieben 1. Februar 2010 Geschrieben 1. Februar 2010 Braucht der User überhaupt eine Shell? Was soll er denn nicht können dürfen? Und warum? Um es ordentlich zu machen, musst du deine Shell modifizieren (ala rbash) oder eben eine "Container" machen nur für den User und alle commands löschen, die er nicht ausführen darf. Sobald du anfängst bei den standard commands die rechte zu ändern wird es hässlich für alle anderen User (wenn das system dann überhaupt noch läuft). Zitieren
carstenj Geschrieben 1. Februar 2010 Geschrieben 1. Februar 2010 Hi, schau dir mal SELinux ? Wikipedia an. Aber das ist schon nicht so trivial einzurichten. Zitieren
SchlimmerFinger Geschrieben 1. Februar 2010 Autor Geschrieben 1. Februar 2010 Ich danke Euch, ist zwar nicht wirklich, womit ich was anfangen kann, liegt aber an mir, ich habe nämlich eine andere Lösung erfunden, vielleicht zumindest teilweise Rad neu erfunden... Mir war es wichtig ohne viel Rumbastelei Ausführung der Befehle zu verbieten, vielleicht sogar Shell, das geht aber ganz einfach indem man beim .bash_profile von dem User in seinem Home Verzeichnis ganz am Ende eine einzige Zeile eingefügt: logout Das ist aber nicht alles gewesen, denn Shell an sich ist die halbe Sache, ich wollte aber auch auf sehr einfache Art und Weise SFTP Zugriffe über SSH verbieten, ohne dass ich viel rumbastle. Und ihr wisst, mir ist es auch gelungen.. Also, ich habe Debian, ich installierte ACL Packet apt-get install acl Dann habe ich die Datei /etc/fstab angepasst, und zwar bei Zeile /dev/hda2 / ext3 defaults,errors=remount-ro nach /dev/hda2 / ext3 defaults,errors=remount-ro, acl geändert, damit acl setzbar sind. Dann die Datei acls.txt mit folgendem Inhalt erstellt. # file: /usr/lib/openssh/sftp-server # owner: root # group: root user::rwx group::r-x other::r-x user:gast:r-- und mit dem Befehl setfacl --restore=acls.txt die erweiterte Rechte gesetzt, ab nun kann der User gast sftp-server nicht mehr ausführen, alle anderen dürfen es. :-) Vielleicht habe ich Rad neu erfunden, aber ich habe die Lösung nicht aus dem Internet, es könnte für jemanden durchaus nützlich sein, denn ich kann ohne weiteres Tunnels aufbauen, beim Terminalstarten wird automatisch ausgeloggt, und sftp geht bei dem User gar nicht. Und ich muss nicht an SSH Server irgendwelche Extraanpassungen durchführen. Wenn ich will, kann ich in die acl Liste weitere User eintragen. Viel Spass und Danke Euch noch mal.. Zitieren
charmanta Geschrieben 1. Februar 2010 Geschrieben 1. Februar 2010 Öhm ... eine Profildatei lässt sich aushebeln, solange Du da nicht mit dem "trap"-Kommando Signale abfängst. Und der klassische Ansatz eines kastrierten Users ist eine rsh, die "restricted shell". Sie schafft ( ähnlich dem modernern Container ) eine isolierte Umgebung. Im Gegensatz zu Containern und Co ist dies auch StandardUnix und rennt auf allen Derivaten Zitieren
SchlimmerFinger Geschrieben 2. Februar 2010 Autor Geschrieben 2. Februar 2010 Ja, Du hast Recht, ich habe das auch festgestellt und versuchte eigentlich eine weitere Lösung hierfür zu finden. Aber wie lässt sich die Sache mit trap erledigen, noch mal bitte kurz erläutern Zitieren
charmanta Geschrieben 3. Februar 2010 Geschrieben 3. Februar 2010 Lies mal nach was sowas macht: trap "exit 0" 0 1 2 3 15 Infos findest Du hier: Trap statement - Linux Shell Scripting Tutorial - A Beginner's handbook oder in jedem guten Linux Buch Zitieren
SchlimmerFinger Geschrieben 3. Februar 2010 Autor Geschrieben 3. Februar 2010 charmanta, ich danke Dir sehr herzlich, da wird man immer schlauer. Und sage mir bitte, wie kann ich dann das System so einstellen, dass dieser Befehl trap "exit 0" 0 1 2 3 15 immer dann ausgeführt wird, sobald sich ein bestimmter User in das System einloggt. Ich meine, dass diese Falle nur für Befehle funktioniert, die ein bestimmter User ausführen will, nicht aber für alle. Du sagtest doch folgendes: Öhm ... eine Profildatei lässt sich aushebeln, solange Du da nicht mit dem "trap"-Kommando Signale abfängst. Kann ich etwa mit Trap bestimmen, dass die Profildatei sich nicht aushebeln lässt. Ich wäre Dir sehr dankbar für jegliche Hilfestellung, es sei denn, Du hast schon was ähnliches gemacht.. Zitieren
charmanta Geschrieben 3. Februar 2010 Geschrieben 3. Februar 2010 wenn Du den Trap Befehl als erstes in die .profile oder eben die Startdatei der Shell einträgst die dem User gehört dann fängst Du dessen Umgehnungsversuche ab. Ich würde dem User das .profile so zumachen und die Shell auf die restricted shell umsetzen. Dann kannst Du dem ein /bin vorgaukeln, in dem nur diejenigen Kommandos drinstehen, die Du ihm zuweist Zitieren
criseas Geschrieben 6. März 2010 Geschrieben 6. März 2010 Mir fallen da spontan 2 Möglichkeiten ein. Einmal die von euch beschriebene chroot umgebung... oder einfacher wenn alle benutzer innerhalb einer passwd sind die entsprechenden User in eine Grp packen und mit chmod die entsprechenden rechte für die Gruppe auf das entsprechende Programm geben... Zitieren
RipperFox Geschrieben 8. März 2010 Geschrieben 8. März 2010 Mir war es wichtig ohne viel Rumbastelei Ausführung der Befehle zu verbieten, vielleicht sogar Shell, ... aber auch auf sehr einfache Art und Weise SFTP Zugriffe über SSH verbieten, ohne dass ich viel rumbastle. Soso.. Die Shell auf false oder nologin zu setzen erfüllt nicht den selben Zweck? Was dürfen die User denn noch können? Grüße Ripper Zitieren
SchlimmerFinger Geschrieben 10. März 2010 Autor Geschrieben 10. März 2010 Die dürfen Tunnels aufbauen. Zitieren
RipperFox Geschrieben 11. März 2010 Geschrieben 11. März 2010 Und die Authentifikation läuft via PAM? (OpenVPN vllt.?) Wenn SSH gar icht nötig ist, hau die User in 'ne Gruppe und trage diese wiederum in der sshd_config in DeniedGroups. Somit wären Tunnels erlaubt, SSH nicht - und dein Problem SEHR einfach gelöst.. (oder es fehlen Angaben von dir *hint* ) - viele Wegen führen nach Rom.. Grüße Ripper Zitieren
SchlimmerFinger Geschrieben 12. März 2010 Autor Geschrieben 12. März 2010 Nein, SSH ist nötig, aber für andere User, nur bei bestimmten nicht. Aber ich schaue, wie ich es mit den Gruppenzuweisung mache. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.