Hallo!
Erstmal das Problem, das ich l�sen will: Ich will auf einer Maschine einen
User f�r Servicezwecke (Runterfahren z.B.) anlegen, der sich aber nur auf
der Konsole anmelden d�rfen soll, damit nicht �bers Netz irgendwelcher
Schabernack getrieben werden kann. Ganz �hnlich also, wie das mit Root
funktioniert, nur mit dem Unterschied, da� dieser "Service-User" ein
Nullpasswort bekommen soll.
Jetzt habe ich zwei M�glichkeiten: Entweder ich pr�fe in seiner Login-Shell
(Men�system zum Ausf�hren der Service-Funktionen), ob er an der Konsole
sitzt, oder ich bilde eine �hnliche Funktionalit�t wie bei root ab, der
sich ja auch nicht �ber Netz anmelden darf.
Ich kann mir vorstellen, da� die zweite M�glichkeit ausscheidet, weil sie
an die UID 0 gebunden ist. Was ist also mit der Ermittlung des
Terminal-Namens? Wie finde ich heraus, an welchem Terminal ich angemeldet
bin? Shell und Perl sind erlaubt.
Ich hab es schonmal folgenderma�en versucht:
#!/usr/bin/perl
use POSIX;
$terminal = POSIX::ctermid();
print "$terminal\n";
Weil "perldoc POSIX" sagt:
ctermid Generates the path name for the controlling
terminal.
$path = POSIX::ctermid();
Da kommt als Ausgabe aber nur "/dev/tty" raus. Das ist nat�rlich v�llig
falsch, egal in welcher Lebenslage.
Wenn alles andere fehlschl�gt, mu� ich die Ausgabe von "who" parsen. Und
wer will das schon? ;-)
-martin
--
It is easier to fix Unix than to live with NT.
---------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org