• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[AppleScript] Datei als Systemuser öffnen

Dennis Jackman

Granny Smith
Registriert
28.08.15
Beiträge
14
Ich habe mir eine Datei erstellt, bei der der root-User volle Rechte hat und alle anderen keine Rechte. Dort standen Passwörter etc. drin, die ich dann durch eine Eingabe wie z.b. "Amazon" per AppleScript mit grep und awk angezeigt habe. Das konnte ich ja mit Hilfe von "do shell script .. with administrator privileges" erreichen.

Ich konnte den Text auslesen, verarbeiten und anzeigen im Script. Nun habe ich mir das alles in eine plist gepackt, da später mehrere Ebenen hinzukamen. Jetzt soll mit dem Script einfach die plist geöffnet werden. Leider weiß ich nicht wie ich das anstellen soll.

Also wenn ich das Script
do shell script "sudo open /etc/.keys.plist" with administrator privileges
ausführe, kommt auch ganz normal die Passwortabfrage. Wenn ich es allerdings eingebe, wird mit gesagt, dass ich die Datei nicht öffnen kann, da ich nicht die Rechte besitze. Ist die Datei für alle zugänglich funktioniert es problemlos.

Was kann ich tun, dass die Datei geöffnet wird und Xcode diese Datei als root-User öffnet?

Danke im Voraus
Mit freundlichen Grüßen
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
do shell script "sudo open /etc/.keys.plist" with administrator privileges
Das nennt man "doppelt gemoppelt" - und ist Unsinn.
Wenn du schon root-Rechte hast, brauchst du doch kein sudo mehr.

Aber... mit 'open' funktioniert das nie - das ist ein Skript, das *niemals* mit superuser-Rechten arbeitet. Egal was du damit versuchst.

Wozu willst du das denn öffnen - zur Bearbeitung, nur zur Anzeige?
 

Dennis Jackman

Granny Smith
Registriert
28.08.15
Beiträge
14
Ja das habe ich mir auch gedacht, nur in einem anderen Forum wurde "sudo cat DATEI" with administrator privileges für einfaches auslesen genutzt und dann habe ich das so übernommen. Ich dachte das muss so sein :)

zur Bearbeitung sollte es schon sein. Wenn ich neue Passwörter zu irgendwelchen Diensten habe, sollte schon die Möglichkeit bestehen diese dort eintragen zu können. Ich habe überlegt Xcode mit dem Pfad zur plist als Parameter zu öffnen, allerdings habe ich nur gefunden, dass man Xcode mit "open" im Terminal öffnet und da wäre ja wieder das selbe problem.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
zur Bearbeitung sollte es schon sein.
Aus Gründen der Sicherheit empfehle ich dir sehr, hier nicht "irgendwie" was zusammen zu murksen.
Benutze dafür lieber einen brauchbaren Texteditor, der den XML-Inhalt zwar nur in seiner "rohen" Form anbietet, sich aber dafür gut auf den sicheren Umgang mit superuser-Privilegien versteht.
Empfehlung: TextWrangler (kostenlos).
Um nur gelegentlich mal kleinere Änderungen in simpel aufgebaute plist einzudröseln sollte das wunderbar genügen.

Tip: Lade dir auf jeden Fall nicht die gleichnamige Version aus dem AppStore, sondern das identische Programm direkt von der Site des Herstellers (über den Link oben).
Die AppStore-Version ist - wie alle Apps von dort, denn das ist absolut tabu im Store - um die entscheidende Möglichkeit zur Bearbeitung mit vollen Systemrechten kastriert worden.
Das Prog enthält auch ein praktisches kleines Hilfsprogramm, mit dem man den Editor sehr flexibel auch direkt aus dem Terminal heraus aufrufen kann (ohne dazu das ziemlich limitierte 'open' benutzen zu müssen).
 
  • Like
Reaktionen: djtwok

Dennis Jackman

Granny Smith
Registriert
28.08.15
Beiträge
14
Einen geeigneten Texteditor besitze ich schon. Nur möchte ich das ganz nicht über einen Texteditor bedienen, da könnte ich ja wieder zurück zu meinem alten System gehen, in der die Daten tabulatorgetrennt in einer Datei standen (wie CSV nur Tabulator anstelle eines Semikolons). Ich finde nur die Ansicht der plist in Xcode ziemlich übersichtlich und ordentlich. Aus diesem Grund wollte ich auch diese Xcode Ansicht haben, wenn ich die plist einsehe.

Notfalls würde ich dann auch eine OS X Anwendung erstellen, die mir die plist Datei ausliest (also das reine XML) und die Daten dann selber, ähnlich wie Xcode, in solch einer Ebenenansicht anzeigt.

Allerdings habe ich gehofft, dass ich dies direk über Xcode anzeigen kann, ohne dies nachzuprogrammieren. Lässt sich da was machen?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Lässt sich da was machen?
Äähm... Butterbrot?
Früher gabs mal einen geschmeidigen, separaten plist-Editor zu den Xcode Tools.
Haben die Lichtgestalten aus CA einfach sterben lassen.

Ich hab dieses alte Tool (aus Xcode 3 oder so?) mal etwas gepatcht, um Abhängigkeitsprobleme mit neueren Bibliotheken zu beseitigen und damit den alten Editor unter neuem OS wieder lauffähig zu bekommen. Fünzelt bis Mavericks noch prima, für spätere kann ich leider nicht sagen, nie probiert. (Der "Vertrauensfaktor" einer signierten Software ist damit natürlich Geschichte.)
Wenn du magst kannst du das ja mal ausprobieren - aber bitte erst mal ohne Systemrechte, ok?
http://www.mediafire.com/download/48utowa46uieocw/Property+List+Editor.zip
( MD5: c8b17c2bdf859a8285ef8d4b97c63f45 )
 

Dennis Jackman

Granny Smith
Registriert
28.08.15
Beiträge
14
Den gibt es immer noch bzw. kann es sein, dass es Ihn jetzt "wieder" gibt. Ich bin erst seit Yosemite dabei. Hier mal ein Beispielbild aus dem Netz, welchen ich meine: http://skylineosx.mcxa.org/images/guide-images/config.plist-Xcode.jpg (Ist noch mit dem alten Design) Mein Problem besteht allerdings auch mit dem "Property List Editor" (dem älteren). Ich kann die plist einfach nicht öffnen, da ich keine Rechte besitze. Die Datei gehört dem User root und hat die Rechteverteilung: -rw-------

Keiner darf was außer root selber (der darf lesend und schriebend auf die Datei zugreifen)

Ich schildere mal den Grund, warum ich das über eine solche plist machen möchte. Ich hatte wie gesagt eine Datei in der die Daten wie folgt gelistet waren:

DIENST BENUTZERNAME PASSWORT
DIENST2 BENUTZERNAME PASSWORT
DIENST3...


Ich habe ein AppleScript erstellt, bei dem ich eine Eingabe mit dem Dienst gemacht habe (z.B. "eBay"). Anschließend wurde dann die komplette Datei ausgelesen (set xyz to do shell script "cat DATEI" with adminis...). xyz wurde dann weiter bearbeitet und mithilfe von grep und awk auf die 3 benötigten Informationen (dienst, nutzername, passwort) begrenzt und am ende angezeigt.

Nun wollte ich das etwas übersichtlicher, schöner und komfortabler gestalten, sodass ich gleich mehrere Passwörter einsehen und bearbeiten kann. Außerdem gibt es manche Dienste mit 2FA und da benötigt man mehr Passwörter etc. Zu einem Dienst wäre nicht nur Nutzername und Passwort sinnvoll, sondern auch Kundennummer etc. Also eine dynamische Anzahl von Werten. Dazu kommt noch, dass mehrere Ebenen sinnvoll wären. Ich speichere dort auch zum Beispiel WLAN Daten:


WLAN
> NETZWERK1
>> SSID
>> WPA2
> NETZWERK2
>> SSID
>> WPA2
>> VPN
>>> NUTZER
>>> GRUPPE
>>> ...
> NETZWERK3

Ich kann also zu den Netzwerken jeweils die SSID und den Schlüssel abfragen und zu manchen Netzen geht es dann noch eine Ebene tiefer mit zum Beispiel VPN Daten oder anderen relevanten Informationen. Dafür eignet sich mein "modifiziertes CSV" nicht, aber XML kann man dafür ziemlich gut nutzen. Und auf dem Mac wird durch die plist gleich ein UI bereitgestellt. Dies ist der Grund, wieso ich versuche einfach die Datei mit Xcode zu öffnen. Alles allgemein zusammengefasst wäre die Frage: Wie kann ich eine root-Datei mit Xcode öffnen?

Man könnte natürlich die Datei selber parsen, aber wozu nen XMLParser schreiben, wenn dieser schon mitgeliefert wird? Ich möchte auch versuchen auf keine weiteren Programme ausweichen zu müssen, denn wenn ich erstmal Programme starten muss etc. um auf die Passwörter zuzugreifen, bevorzuge ich lieber die "CSV"-Lösung. Die war ziemlich simpel und man kam schnell an die Passwörter:

[cmd] + [Space] ->
"passwo.." in Spotlight. Hat das Script direkt gefunden. Return drücken ->

Dienst eingeben. Return drücken ->
Masterkey eingeben (root Passwort). Return drücken ->
Passwort wird angezeigt

Die einzige bessere Lösung wäre:
[cmd] + [Space] ->
"passwo.." in Spotlight. Script wird gefunden. Return drücken ->

Masterkey eingeben (root Passwort). Return drücken ->
plist-Datei wird geöffnet

Das ist mein Ziel. Es muss doch irgendwie möglich sein, eine Datei, die der root-User öffnen darf mit der Eingabe des Passworts auch in der normalen Umgebung anzuzeigen.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
1) Es ist nicht besonders klug, solche Infos über Nutzerkonten/kennworte zu "sichern".
Sinnvoller wäre der Einsatz von Verschlüsselung, und die Kennworte dazu in den Schlüsselbund eines bestimmten Nutzers - zugänglich nur für ein bestimmtes Programm.

2) Du kannst (bevorzugt aus dem Terminal, zwecks einfacher Kontrolle) ein GUI-Programm auch von der Kommandozeile aus aufstarten (als Kindprozess der dort laufenden Shell).
Auch mit vollen root-Rechten.
sudo "/Applications/Example.app/Contents/MacOS/app-bin" &
Mit einer wahren Monströsität einer Xcode.app ist das aber keinesfalls ratsam.
 

Dennis Jackman

Granny Smith
Registriert
28.08.15
Beiträge
14
Naja, wenn das wirklich so aufwendig ist, werde ich wohl doch auf den Schlüsselbund zurückgreifen. Ich wollte dort immer ausweichen, da ich VPN Daten nicht speichern kann (schon ja, die Verbindungsdaten werden irgendwo gespeichert, aber ich kann mir eben nicht explizit den Server oder den Gruppennamen anzeigen lassen. Ich habe im Schlüsselbund nur das Shared Secret und das Passwort gefunden).

Gibt es da irgendwie ein Möglichkeit diese auch zu hinterlegen oder gar Ebenen (Ordner etc.) zu erstellen?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Naja, du kannst zB beliebig viele Schlüsselbunde erstellen (und gleichzeitig nutzen) und diese dann systematisch benennen, bzw strukturiert in Ordnern ablegen.