Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17
  1. #1
    Schöner von Nordhausen
    Themenstarter

    Registriert
    10.2008
    Beiträge
    324

    Shell Skript soll Passwort sicher erfragen

    Ich habe eine.app programmiert, die ein Shell-Skript ausführt. Da ich dort einige sudo Befehle habe, möchte ich gerne dass das Passwort vom Benutzer abgefragt wird.

    Dabei ist es wichtig, dass das Passwort nicht in der Konsole oder sonstwo im Klartext erscheint.

    Optimal wäre eine Abfrage wie man sie vom System kennt, wo der Benutzername schon ausgefüllt ist und nur das Admin Passwort verlangt wird. Wer kann mir weiterhelfen?

  2. #2
    Schöner von Nordhausen
    Themenstarter

    Registriert
    10.2008
    Beiträge
    324
    Ich habe jetzt versucht den Befehl einfach zu starten, aber das Programm führt ihn nicht aus.

    Code:
    #!/bin/bash
    
    sudo BEFEHLKETTE
    sudo ...
    Im Terminal erhalte ich eine Eingabemaske, aber wenn ich es über die .app laufen lasse kann ich natürlich nichts angeben.

  3. #3
    Rheinischer Krummstiel Avatar von Duck Dodgers
    Registriert
    12.2009
    Ort
    Düsseldorf
    Beiträge
    377
    Was genau meinst du mit app? Und wie führst du das script aus? Erklär mal genauer was du machst?

  4. #4
    Schöner von Nordhausen
    Themenstarter

    Registriert
    10.2008
    Beiträge
    324
    Ich habe einen Ordner namens Programm.app und dann die übliche Struktur erstellt. Ein Doppelklick startet /MacOS/Script, was ich mit chmod +x ausführbar gemacht habe. Ich weiss nicht genau wie ich das nennen soll.

  5. #5
    Rheinischer Krummstiel Avatar von Duck Dodgers
    Registriert
    12.2009
    Ort
    Düsseldorf
    Beiträge
    377
    Äh das ist nicht dein ernst, oder? Ein Ordner namens Programm.app? Jedes Programm ist ein Ordner! Bist du sicher das du unbedingt selber programmieren willst? ... Was ich meinte ist, ist es in C, C++, Java, ... bzw. in welche Sprache programmierst du? Wie sieht der Code aus, wo das Script aufgerufen wird? Schau mal in die Apple Developer Dokus, dort wird sehr gut erklärt, wie man sowas lösst.

  6. #6
    Charlamowsky Avatar von Rastafari
    Registriert
    03.2005
    Beiträge
    12.966
    Die wohl einfachste Weise ein Shellskript mit einem GUI-Dialog das Adminkennwort abfragen zu lassen ist die Einkapselung in ein AppleSkript.
    Das bietet sich besonders bei nur einzelnen Befehlen oder sehr kurzen, simplen Skripten an. Im AppleSkript-Editor sieht das so aus:
    Code:
    try
        do shell script "
                Shell-Befehle;
                ...;
                Shell-Befehle;
        " with administrator privileges 
    end try
    Aufgemerkt: KEIN 'sudo' verwenden, diese Funktion übernimmt die entsprechende AppleSkript-Anweisung.
    Doppelte Anführungszeichen und Backslashes innerhalb der Shellbefehle müssen jeweils durch einen vorangestellten Backslash maskiert werden, sonst werden sie von AppleSkript missverstanden. (Beachte die Gänsefüsschen, die den gesamten Skripttext kapseln.)
    Ausgeführt wird das ganze mit der Shell /bin/sh im Posix-Modus, einige Bash-Features stehen also nicht zur Verfügung (also genau so wie ein normales Shellskript, das mit dem Shebang '#!/bin/sh' eingeleitet wird.)
    Das Shellskript wird von root ausgeführt, Arbeitsverzeichnis ist /
    Textausgaben des Skripts werden an AppleSkript zurückgegeben und können dort in eine Variable eingelesen werden falls gewünscht.
    Ein reales Skript könnte also folgendermassen aussehen:
    Code:
    property ausgabetext : string
    try
        set ausgabetext to do shell script "
            echo Ein\\ doofer\\ Ordner:
            echo
            ls -1 \"/System/Library/User Template\"
            echo
            echo
            echo \"Noch einer:\"
            echo
            ls -1 \"/private/var/root\"
        " with administrator privileges
        display dialog "Ausgabe ist:" & return & return & ausgabetext buttons "OK" with title "Skriptausgabe" with icon note default button 1 giving up after 10
    end try
    Eine ganz andere Methode wäre die Verwendung von /usr/libexec/authopen - aber das eignet sich nur zum Zugriff auf einzelne Dateien, um das in einem Skript sinnvoll verwenden zu können ist etwas weiterreichende Erfahrung nötig.
    Geändert von Rastafari (20.01.2011 um 07:09 Uhr)

  7. #7
    Rheinischer Krummstiel Avatar von Duck Dodgers
    Registriert
    12.2009
    Ort
    Düsseldorf
    Beiträge
    377
    Jo, wenn sein Programm.app ein AppleScript ist

  8. #8
    Schöner von Nordhausen
    Themenstarter

    Registriert
    10.2008
    Beiträge
    324
    Zitat Zitat von Duck Dodgers Beitrag anzeigen
    Äh das ist nicht dein ernst, oder? Ein Ordner namens Programm.app? Jedes Programm ist ein Ordner! Bist du sicher das du unbedingt selber programmieren willst? ... Was ich meinte ist, ist es in C, C++, Java, ... bzw. in welche Sprache programmierst du? Wie sieht der Code aus, wo das Script aufgerufen wird? Schau mal in die Apple Developer Dokus, dort wird sehr gut erklärt, wie man sowas lösst.
    Ich bin zwar kein Apple Developer, aber ich weiss schon was ich tue. Die Notation mag jetzt nicht perfekt sein, aber ich denke das sagt schon welche Sprache ich verwenden werde: "Ich habe eine.app programmiert, die ein Shell-Skript ausführt."


    Zitat Zitat von Rastafari Beitrag anzeigen
    ...
    Aufgemerkt: KEIN 'sudo' verwenden, diese Funktion übernimmt die entsprechende AppleSkript-Anweisung.
    Doppelte Anführungszeichen und Backslashes innerhalb der Shellbefehle müssen jeweils durch einen vorangestellten Backslash maskiert werden, sonst werden sie von AppleSkript missverstanden. (Beachte die Gänsefüsschen, die den gesamten Skripttext kapseln.)
    Ausgeführt wird das ganze mit der Shell /bin/sh im Posix-Modus, einige Bash-Features stehen also nicht zur Verfügung (also genau so wie ein normales Shellskript, das mit dem Shebang '#!/bin/sh' eingeleitet wird.) ...
    Vielen Dank das ist genau das was ich gesucht habe. Ich hatte bei meinen Versuchen immer sudo verwendet und dadurch hat diese Methode nicht funktioniert.
    Zum Test habe ich mit osacscript -e '' ein shellscript, in einem applescript, in einem shellscript ausgeführt und es hat soweit funktioniert. Ich bin da etwas unerfahren, kann ich irgendwo definieren, dass mein Script ein AS ist? Mit dem Befehl osascript im shellscript will OS X Rosetta installieren.

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>CFBundleExecutable</key>
    	<string>script</string>
    	<key>CFBundleInfoDictionaryVersion</key>
    	<string>6.0</string>
    	<key>CFBundlePackageType</key>
    	<string>APPL</string>
    	<key>CFBundleSignature</key>
    	<string>????</string>
    	<key>CFBundleVersion</key>
    	<string>1.0</string>
    	<key>LSUIElement</key>
    	<string>1</string>
    </dict>
    </plist>

  9. #9
    Rheinischer Krummstiel Avatar von Duck Dodgers
    Registriert
    12.2009
    Ort
    Düsseldorf
    Beiträge
    377
    Zitat Zitat von dawiinci Beitrag anzeigen
    Ich bin zwar kein Apple Developer, aber ich weiss schon was ich tue. Die Notation mag jetzt nicht perfekt sein, aber ich denke das sagt schon welche Sprache ich verwenden werde: "Ich habe eine.app programmiert, die ein Shell-Skript ausführt."
    Also ist eine .app ein Shell-Skript? Man kann Java/Cocoa/AppleScript/...-Apps programmieren und dort können auch shell-skripte aufgerufen werden Wenn du nicht weiter erklären willst, dann eben nicht ... viel spaß weiterhin

  10. #10
    Schöner von Nordhausen
    Themenstarter

    Registriert
    10.2008
    Beiträge
    324
    Zitat Zitat von Duck Dodgers Beitrag anzeigen
    Also ist eine .app ein Shell-Skript? Man kann Java/Cocoa/AppleScript/...-Apps programmieren und dort können auch shell-skripte aufgerufen werden Wenn du nicht weiter erklären willst, dann eben nicht ... viel spaß weiterhin
    Wie gesagt, dass ist das was es macht. Ich bin kein Programmierer, sondern möchte nur ein Shell-Skript ausführen. Genaus das funktioniert mit meinem Programm.

    Die Frage ist wie kann ich von Shell auf AS umschalten? Ich nehme an es ist ein Eintrag in der info.plist nötig.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •