Forums Neueste Beiträge
 

Benutzernamen rausfinden / Zugangsdaten verstecken

23/06/2008 - 12:57 von Florian.Lindner | Report spam
Hallo,

ich habe ein Skript unter Linux welches den Benutzernamen des
aufrufenden Benutzers braucht. Dafür benutzt es os.getlogin(). Leider
schlàgt dies fehl, wenn das Skript von cron aufgerufen wird:

username = os.getlogin()
OSError: [Errno 25] Inappropriate ioctl for device

Als Alternative wird in der Dokumentation pwd.getpwuid(os.getuid())[0]
angegeben. Dies hat allerdings ein Problem.
Das Skript enthàlt Zugangsdaten, die die Benutzer nicht sehen dürfen.
Da ein Skript nicht setuid root sein darf habe ich ein kleines Bash-
Skript benutzt:

#!/bin/bash

sudo /root/scripts/account.py "$@"

und sudoers entsprechend angepasst. Dies ermöglicht: a) normale
Benutzer können das Skript ausführen b) aber nicht den Quelltext sehen
c) müssen sudo nicht selber aufrufen.

Leider liefert getpwuid mit sudo aufgerufen root zurück, wàhrend
getlogin die von mir gewünschte ID des aufrufenden Benutzers
zurückgibt:

osiris:~# su flindner -c "python test.py"
Mit getpwuid: flindner
Mit getlogin: root

(in dem Fall soll es root zurückliefern, da dies der Benutzer ist der
su ausführt. flindner ist hier die nicht gewünsche Ausgabe)

Nun suche ich entweder:

- Eine Möglichkeit den Benutzer festzustellen, auch wen das Skript per
cron aufgerufen wird. (persönliche crontab des Benutzers)

- Eine andere Möglichkeit die Zugangsdaten in das Skript (oder auch
externe Datei) zu schreiben ohne das Benutzer sie auslesen können.

Wer weiß da was?

Danke,

Florian
 

Lesen sie die antworten

#1 Johannes Bauer
23/06/2008 - 19:52 | Warnen spam
schrieb:

#!/bin/bash

sudo /root/scripts/account.py "$@"

und sudoers entsprechend angepasst. Dies ermöglicht: a) normale
Benutzer können das Skript ausführen b) aber nicht den Quelltext sehen
c) müssen sudo nicht selber aufrufen.



Hmm - obwohl ich dein Konstrukt etwas wackelig finde, weil es security
by obscurity ist - wieso machst du nicht sowas:

sudo /root/scripts/account.py "${UID}" "$@"



Und benutzt dann halt in Python erst die darauf folgenden Parameter?
Achtung, "LOGNAME" und "USER" können veràndert werden, UID ist readonly.

Viele Grüße,
Johannes

"Wer etwas kritisiert muss es noch lange nicht selber besser können. Es
reicht zu wissen, daß andere es besser können und andere es auch
besser machen um einen Vergleich zu bringen." - Wolfgang Gerber
in de.sci.electronics <47fa8447$0$11545$

Ähnliche fragen