dosenfutta Geschrieben 7. Oktober 2003 Teilen Geschrieben 7. Oktober 2003 hallo zusammen, kleines problem das ich bisher noch nicht lösen konnte. ich habe ein skript, welches diverse datenbankmanipulationen vornimmt (mit dbi) dasskript kann und darf nur von root ausgeführt werden. (der rechner wird nur über ssh administriert, root login an ssh deaktiviert in der sshd_config) nun mein problem, das skript soll ein logfile schrieben welches mir den eigeloggten user mitloggt. nun die eigentliche frage: wie finde ich raus welcher user das root skript ausgeführt hat. (user welselt zu root mit su, ich benötige den normalen usernamen) bin für jede erdenktlich art von brainstorming dankbar. grüsse dose Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 7. Oktober 2003 Teilen Geschrieben 7. Oktober 2003 Hallo, das ist eine interessante Frage. Mit whoami erhälst Du ja den User, der gerade aktiv ist. Wenn er aber mit su zu root wechselt, ist whoami ja root. Das wäre eher eine Frage fürs Linuxforum. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 7. Oktober 2003 Teilen Geschrieben 7. Oktober 2003 Original geschrieben von palvoelgyi Das wäre eher eine Frage fürs Linuxforum. Jep, hast recht, ich schiebs mal rüber.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 9. Oktober 2003 Teilen Geschrieben 9. Oktober 2003 wieso vergibst du nicht das spezielle Bit (Rechte) Set-User-ID ?? "s" auf das File? Oder warum merkst du dir nicht in einer Variablen wer das Skript ausgeführt hat und anschließend wechselst du zu root?? preUser="$(whoami)"; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dosenfutta Geschrieben 10. Oktober 2003 Autor Teilen Geschrieben 10. Oktober 2003 nene, das is die lösung: who|grep "`ps|grep bash|awk '{print $2}'`"|awk '{print $1}' warum umstädnlich wenns auch einfach geht zitat ----------------------------------------------------------------------------- wieso vergibst du nicht das spezielle Bit (Rechte) Set-User-ID ?? "s" auf das File? Oder warum merkst du dir nicht in einer Variablen wer das Skript ausgeführt hat und anschließend wechselst du zu root?? ------------------------------------------------------------------------------ wie ich bereits in meiner fragestellung erläutert habe, darf und kann das skript nur von root ausgeführt werden (rechte 700) - das hat schon seine gründe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 10. Oktober 2003 Teilen Geschrieben 10. Oktober 2003 Original geschrieben von dosenfutta nene, das is die lösung: who|grep "`ps|grep bash|awk '{print $2}'`"|awk '{print $1}' das kapier ich nicht ganz - warum denn so umständlich?? Jetzt hast du zwar die aktuelle Shell und damit den Usernamen, aber mit dem kannst du auch nix anfangen wenn du jetzt mit su zu root wechselst und dann das Kommando nochmal ausführst bekommst du wieder root. Du musst doch die Info in irgend einer Variablen erhalten und wenn das so ist, dann kannst du doch auch whoami sagen und dir merken wer du warst bevor du root wurdest. Oder steh ich jetzt auf dem Schlauch?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. Oktober 2003 Teilen Geschrieben 11. Oktober 2003 Das ist nicht ganz richtig. Wenn man sich als normaler User einloggt und dann mit su zu root wechselt, dann zeigt whoami zwar root aber dieser Befehl gibt den normalen User aus. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dosenfutta Geschrieben 11. Oktober 2003 Autor Teilen Geschrieben 11. Oktober 2003 herr schlaubi, wechsel doch mal bitte mit su zu root und führ den reg oben aus ...... was bekommst du - den username mit dem du dich eingeloggt hast und nicht "root" obwohl du root bist. mit whoami bist du root - gibt er dir root aus, bist du user gibt er dir den user aus wieso soll ich mit mit whoami merken wer ich war? das skritp ist geownt bei root -> kann nur von root ausgeführt werden und das bedeutet ich muss vorher schon root sein bevor ich das skript starte. warum merken ? naja auf jeden fall ist das problem definitiv gelöst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 11. Oktober 2003 Teilen Geschrieben 11. Oktober 2003 Original geschrieben von palvoelgyi aber dieser Befehl gibt den normalen User aus. Frank Das will er ja auch so - oder etwa nicht?? Original geschrieben von dosenfutta herr schlaubi, wechsel doch mal bitte mit su zu root und führ den reg oben aus ...... was bekommst du - den username mit dem du dich eingeloggt hast und nicht "root" obwohl du root bist. mit whoami bist du root - gibt er dir root aus, bist du user gibt er dir den user aus wieso soll ich mit mit whoami merken wer ich war? das skritp ist geownt bei root -> kann nur von root ausgeführt werden und das bedeutet ich muss vorher schon root sein bevor ich das skript starte. warum merken ? naja auf jeden fall ist das problem definitiv gelöst. Also ich muss absolut auf dem Schlauch stehen, ich kapier es nicht - also erklärs mir mal bitte.... Es ist doch so: root@home:~> su root@localhost's password: Last login: Sat Oct 11 14:58:53 2003 from localhost Have a lot of fun... home:~# und dann: home:~# who|grep "`ps|grep bash|awk '{print $2}'`"|awk '{print $1}' root home:~# Und wo hilft dir jetzt der Befehl bei deinem Problem: Original geschrieben von dosenfutta wie finde ich raus welcher user das root skript ausgeführt hat. (user welselt zu root mit su, ich benötige den normalen usernamen) Also wenn ich falsch liege dann sorry, aber ich kann auch nix anderes machen, als deine Kommandos einzugeben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 12. Oktober 2003 Teilen Geschrieben 12. Oktober 2003 Hallo, naja, wenn Du als User "root" ein "su" nach "root" durchführst, liefert das Kommando natürlich auch "root" zurück . Das Skript sucht sich das Pseudo-TTY Deiner Shell und ermittelt dazu den entsprechenden User aus den login-records (utmp) mittels "who". Funktionieren tut dies allerdings nur unter bestimmten Voraussetzungen. So muss beispielsweise auch die bash laufen, ist dies nicht der Fall (weil der Nutzer nach dem "su" in eine andere Shell wechselt), schlägt das Kommando fehl. Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 12. Oktober 2003 Teilen Geschrieben 12. Oktober 2003 Original geschrieben von nic_power Hallo, naja, wenn Du als User "root" ein "su" nach "root" durchführst, liefert das Kommando natürlich auch "root" zurück . Sorry das war nur ein Schreibfehler weil ich nicht den Hostnamen posten wollte und da hab ich ausversehen statt nem user, root hingebastelt. Ich habs nochmal getestet und es ist so: user@home:~> su user@localhost's password: Last login: Sat Oct 11 14:58:53 2003 from localhost Have a lot of fun... home:~# und dann: home:~# who|grep "`ps|grep bash|awk '{print $2}'`"|awk '{print $1}' root home:~# Und es kommt immernoch root raus Ich hab auch als root die Bash in Benutzung -> bash2.0.5 Original geschrieben von nic_power Das Skript sucht sich das Pseudo-TTY Deiner Shell und ermittelt dazu den entsprechenden User aus den login-records (utmp) mittels "who". Funktionieren tut dies allerdings nur unter bestimmten Voraussetzungen. So muss beispielsweise auch die bash laufen, ist dies nicht der Fall (weil der Nutzer nach dem "su" in eine andere Shell wechselt), schlägt das Kommando fehl. Nic Wenn das Kommando solche Nebenwirkungen hat, würde ich es garnicht erst verwenden, weil das Skript überhaupt nicht portable wäre. Trotzdem weiß ich immernoch nicht, woran es bei mir liegt, dass wenn ich das Kommando als root ausführe (vorher mit su zu root gewechselt) nicht einen Usernamen sondern root angezeigt bekomme. Ich bin aber immernoch der Meinung, dass dieses Kommando nicht funktionieren kann (bzw. dass ein user angezeigt wird). Ersichtlich wird dies, wenn man es mal aufdröselt: who # Es wird nachgesehen, wer eingeloggt ist dann wird gegrept und zwar z.B. nach: pts/16 diese Ausgabe wird durch den awk gefiltert, so dass nur $1 ausgegeben wird: who | grep pts/16 | awk '{print $1}' und der user der herauskommt ist der user, dem das pseudo tty gerade zugesprochen ist, bei mir, nachdem ich auf dem selben tty als root eingeloggt bin eben root. Also müsste man sich mal das ps-Kommando ansehen: Nachdem man sich mit su eingeloggt hat wird von pts/16 auf pts/17 erhöht. Aber das kannst du mit deinem Kommando nicht abfangen (du möchtest ja den User von pts/16) weil du ja wieder nach pts/17 suchst also user root. Also ich gebs langsam auf.....du meinst dein Kommando funzt ich bin nicht überzeugt, what shells Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 12. Oktober 2003 Teilen Geschrieben 12. Oktober 2003 Dann scheint das nur bei Dir nicht zu funktionieren. SSH Verbindung herstellen mit User frank frank@server: who frank pts/0 Oct 12 15:33 frank@server: su root frank@server: whoami root frank@server: who frank pts/0 Oct 12 15:33 frank@server: who|grep "`ps|grep bash|awk '{print $2}'`"|awk '{print $1}' frank Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 12. Oktober 2003 Teilen Geschrieben 12. Oktober 2003 Genau das habe ich auch gemacht und du hast recht es funktioniert bei mir nicht, aber keine Ahnung wodurch diese Wechselwirkungen auftreten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dosenfutta Geschrieben 13. Oktober 2003 Autor Teilen Geschrieben 13. Oktober 2003 Original geschrieben von palvoelgyi Dann scheint das nur bei Dir nicht zu funktionieren. SSH Verbindung herstellen mit User frank frank@server: who frank pts/0 Oct 12 15:33 frank@server: su root frank@server: whoami root frank@server: who frank pts/0 Oct 12 15:33 frank@server: who|grep "`ps|grep bash|awk '{print $2}'`"|awk '{print $1}' frank Frank ich schließe mich ganz und gar dem an Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.