Unleserliche Plist Files (com.apple.loginwindow.plist), Binärformat??

matzh

Mitglied
Thread Starter
Dabei seit
03.07.2005
Beiträge
22
Reaktionspunkte
0
Hallo,

ich würde gerne das automatische Login nur unter bestimmten Bedingungen (zu bestimmten Zeiten) aktivieren.
(Tiger 10.4.2)
Dazu habe ich mir 2 Shell-Scripts geschrieben, die das
/Library/Preferences/com.apple.loginwindow.plist File entsprechend anpassen.

(Die notwendigen keys sind:
<key>autoLoginUser</key><string>benutzername</string>
<key>autoLoginUserUID</key><integer>501</integer>, oder welche UID auch immer, falls dies jemanden interessiert, aber das nur am Rande)

Sind die entsprechenden Keys im plist File und man startet neu, gibt's einen Autologin, ansonsten muss man sein Passwort eingeben, es funktioniert also prinzipiell.

Nun ist aber jedesmal nach dem Neustart oder nach Manipulation in den Systemeinstellungen das Property List file total verhunzt.
Mit dem Property List Editor kann man das lesen, dann wieder abspeichern und alles ist wieder xml.
Ich glaube Apple hat noch ein Binärformat und ich vermute, das die plist in diesem Format abgespeicher wird, aber wie kann ich Sie dann wieder umwandeln, bevor ich sie (automatisch per Skript) editiere.

Hintergrund ist, ich möchte zu best. Zeiten, egal ob ich zuhause bin oder nicht, Skripts ausführen, die das GUI und mein Schlüsselbund benutzen (Mailabfrage, z.B.).
Dazu kann ich das Powermanagement benutzen, und mein PB fährt dann hoch
Also einfachste Lösung wäre mich dann einzuloggen und ich kann alles problemlos benutzen. Dazu möchte ich Autologin aktivieren und dann einen Neustart ausführen. Ich möchte das Autologin nicht generell drinlassen.

Wenn jemand weiss, wie root einen Benutzer direkt einloggen kann, ohne Passwortabfrage und mit GUI, würde das auch helfen.

Matthias
 
Sorry, wenn ich gleich auf mein eigenes Posting antworte, aber so ist's halt mal im Forum zum Suchen ;)
Code:
plutil -convert xml1 com.apple.loginwindow.plist
im Terminal.
 
Hallo Matzh,

gelingt dir das eigentlich auch noch unter 10.4.3? Bei mir werden nämlich Manipulationen an der plist beim ausloggen auf die Werte zurückgesetzt, welche unter Systemeinstellung/Benutzer gemacht wurden. Also wenn ich manuell autoLoginUser eintrage und der Autologin in der GUI deaktiviert war, ist nach einem Reboot autoLoginUser wieder weg.
 
Hallo Tekl,

hab's gerade probiert. Scheint noch zu funktionieren.
Hier mein komplettes "alogin_on" Skript, welches ich als root ausführe. Nach einem anschliessenden reboot bin ich ohne loginwindow eingeloggt:
Code:
#!/bin/bash
fname='/Library/Preferences/com.apple.loginwindow.plist'
outfile='/Library/ShellScripts/alogin_flag'
user=benutzername
plutil -convert xml1 $fname
if grep -q autoLogin $fname
then
  echo "alogin is already turned on, nothing done"
else
  cat $fname | sed 's/<dict>/<dict>  \
	<key>autoLoginUser<\/key>  \
	<string>'$user'<\/string>  \
	<key>autoLoginUserUID<\/key>  \
	<integer>501<\/integer>/' > temp.plist
  mv temp.plist $fname
  date > $outfile
  echo $user >> $outfile
fi
Wenn ich's mir jetzt anschaue, verstehe ich selber nicht mehr, wieso der Benutzername in '$user' richtig interpretiert wird, aber es funktioniert, naja... habe wohl solange daran "herumgefummelt", bis es ging.

Gruss

Matthias
 
Zuletzt bearbeitet:
Hey, danke für das Skript. Ich wollte sowas für ein LogoutHook einsetzen und mein bisheriges Skript hat da immer versagt. Scheinbar muss die plist-datei einfach neu angelegt werden. Ist das bei dir eigentlich auch so, dass der Mac dann beim nächsten Start oft das Systempasswort erfragt?
 
Ja, ich glaube so etwas wie der Umweg über die temp.plist war da notwendig, oder es war mir wohler dabei.
Das mit dem Systempasswort sagt mir jetzt nichts. Nachdem ich das Skript laufen lasse, bin ich sofort eingeloggt, ganz normal, als wenn ich vorher im Login-Window Nutzer und PW eingegeben hätte.
Wenn ich es wieder ausschalte (Skript wie oben nur mit " cat $fname | sed '/autoLogin/,/integer/d' > temp.plist " , löscht alle Zeilen von autoLogin bis integer)
erscheint das normale Login-Fenster.

Mein Login-Window sah aber ganz anders aus (Username schon voreingestellt und nicht editierbar), als ich versucht habe, die loginwindow.plist völlig neu zu schreiben. Eventuell ist es so etwas bei Dir. Es gibt da noch so Tags wie "LastCompactInfo" usw., die wohl irgendwie benutzt werden.
 
Zurück
Oben Unten