Befehl nach user Login ausführen (je user)

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Marmor626
Beiträge: 24
Registriert: 24.01.2010 08:54:41

Befehl nach user Login ausführen (je user)

Beitrag von Marmor626 » 13.10.2010 07:59:41

Hallo Forum.

Ich habe ein kleines Problem, das Tante Google leider nicht lösen konnte.

Ich möchte einen Befehl ausführen, sobald sich ein User anmeldet.

Im konkreten Fall:
UserName: Halt -> Passwort: Halt -> Auszuführender Befehl: halt
UserName: Reboot -> Passwort: Reboot -> Auszuführender Befehl: reboot

Damit soll jemand meinen Homeserver neu starten können, ohne das er selber auf der Konsole "rumhacken" soll/muss/braucht.

Ich habe zwar viele Anleitungen zum Thema "Autostart" gefunden, doch leider nur für globale Ausführung, also nicht abhängig vom LoginNamen.

Wäre toll, wenn mir jemand die Lösung schreiben könnte - oder mich zumindest in die richtige Richting schubbsen würde.

Danke
Robert Kraus

TuxPeter
Beiträge: 2025
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Befehl nach user Login ausführen (je user)

Beitrag von TuxPeter » 13.10.2010 08:45:21

.profile ?!

uname
Beiträge: 12500
Registriert: 03.06.2008 09:33:02

Re: Befehl nach user Login ausführen (je user)

Beitrag von uname » 13.10.2010 09:43:53

Ich würde als Shell in /etc/passwd eine Art Restricted-Shell einsetzen:

Code: Alles auswählen

halt:x:1002:1002:halt,,,:/home/halt:/usr/local/bin/halt
Darin dann etwa sowas:

Code: Alles auswählen

#!/bin/sh
sudo /sbin/halt
Natürlich den Eintrag in /etc/sudoers per "visudo" nicht vergessen.

Gut und einfach ist die Lösung natürlich nicht. Einfacher wäre es, wenn Du SSH-Keys zur Anmeldung als Benutzer "root" nutzen würdest. Hierbei kannst du einzelne Public-Keys in /root/.ssh/authorized_keys so berechtigen, dass sie nur einen Befehl ausführen dürfen und damit auch direkt ausführen:

Code: Alles auswählen

"command=/sbin/halt" ssh-rsa AAAAB....
Der Benutzer braucht dann nur

Code: Alles auswählen

ssh root@server
aufrufen. Keine Anmeldung, kein Passwort. Je nach genutztem SSH-Private-Key wird die Aktion ausgeführt.

Sollte der Benutzer mehrere Befehle ausführen sollen (also "halt" oder "reboot"), so kannst du für den selben Public-Key beide Befehle eintragen. Aufruf sollte dann so sein:

Code: Alles auswählen

ssh root@server /sbin/halt
ssh root@server /sbin/reboot
Natürlich darf der Benutzer mit dem zugehörigen Private-Key nur diese Befehle ausführen.

Antworten