Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 20. Nov 2018 22:22

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Passwort-Eingabe
BeitragVerfasst: 12. Feb 2009 20:07 
Offline

Registriert: 14. Mai 2007 19:27
Beiträge: 70
Hallo Leute!

habe das Problem dass ich von meinem Programm aus ein Passwort abfragen will
welches der User eingeben soll.
Jedoch wird das Passwort am screen ausgegeben, was ich nicht möchte.

Habe es mit getchar(), getc(), getline(), scanf() versucht
aber immer wird das Zeichen am Bildschirm ausgegeben.

wie kann ich jetzt das stdout im programm umleiten ins nirvana?

8) pcAlko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 12. Feb 2009 21:43 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Das geht über die Terminaloptionen.
Code:
$ stty -F /proc/$$/fd/0 -echo
und du siehst nicht mehr, was in der Shell getippt wird.
Code:
$ stty -F /proc/$$/fd/0 echo
Damit geht das Echo wieder an. /proc/$$/fd/0 löst auf die von der aktuellen Shell verwendete Standardeingabe auf, das ist üblicherweise /dev/pts/1234 oder sowas (im Framebuffer ist es /dev/tty0 oder so).
In einem C-Programm kannst du das Echo mit termios einstellen. man termios.
Oder du nimmst ncurses, da kann man mit noecho das Echo abstellen. man noecho.

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 13. Feb 2009 19:37 
Offline

Registriert: 14. Mai 2007 19:27
Beiträge: 70
Hallo Janka!

Danke, hat super funktioniert,
ich hab mich für termios entschieden.

Aber nun gleich zur nächsten Frage.
die ich zwar schon selbst gelöst habe, aber mir nicht klar ist ob diese Lösung auch sauber ist.


ich möchte natürlich nicht dass man das Passwort in der command line eingeben kann
zb.
Code:
myapp <passwort>
da man dieses bei
Code:
ps -ef | grep myapp
ja dann sieht.

Um, das ganze jetzt aber doch automatisieren zu können,
zb. durch ein script
schreibe ich das pwd in eine Datei und mach sie mit chmod nur für die uid in dem das script läuft lesend.

somit kann ich schreiben
Code:
myapp < Datei
wenn ich nun beim ersten tcgetattr() einen Fehler bekomme
setze ich mit tcsetattr() gar nicht mehr das c_lflag auf ~ECHO

funktioniert super
jedoch ist das sauber? oder gibt es da eine bessere Lösung?
mir ist nicht klar ob ich nur in diesem Fall, wenn ich eine Umleitung mache, eben bei tcgetattr() einen Fehler bekomme.

8) pcAlko

[edit]
ok, jetzt hab ich auch noch eine abfrage beim Fehler hinzugefügt dass er mir
dieses Vorgehen nur macht wenn errno 25 ist (Inappropriate ioctl for device)
hoffe das ist ok so


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15. Feb 2009 22:59 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
Deine Lösung mit der Pipe ist natürlich so ok, und ja, einfach den Fehler -ENOTTY zu ignorieren ist in dem Fall auch ok.

Die Frage ist, warum du für deine Applikation überhaupt einen solchen Passwort-Mechanismus einbauen willst. Willst du su oder sudo nachprogrammieren?

Janka

_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 22. Feb 2009 19:30 
Offline

Registriert: 14. Mai 2007 19:27
Beiträge: 70
Nein möchte ich eigentlich nicht!

Wenn Du Dich errinnern kannst -> Ich bin der, der Dich mit dem DS2408 lange Zeit genervt hat. :)
Naja, jetzt hat mein Server mit der Zeit auch schon einen Zugangs-Berechtigung
und eben dafür brauche ich dieses Vorgehen.

Danke für Deine Antwort
8) pcAlko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 17. Apr 2009 10:43 
Offline

Registriert: 17. Apr 2007 16:55
Beiträge: 35
Ein Trick, den ich auch schon probiert habe und der auch funktioniert,

programm password kann man aufrufen und muß dann im Programm gleich
am Anfang argv[] in der Laenge des Passwords auf Space setzen. Dann erscheint es
nicht mehr in ps und Konsorten - ist sicherlich nicht die feine pferdige Art - aber bei
meiner Anwendung funktionierts prima. Man sollte nur nicht über die
Länge des PW spacen


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de