Firefox startet nicht - .parentlock

newsaktuell

newsaktuell

Mitglied
Thread Starter
Dabei seit
10.12.2003
Beiträge
33
Reaktionspunkte
0
habe das Problem, dass sich beim Start von FIREFOX eines OD-Users (OD=OpenDirectory) manchmal (und danach immer öfter bis dauernd) folgende Meldung statt eines Browsers auftaucht:




Firefox beenden


Eine Firefox-Kopie wird bereits ausgeführt. Es können nicht mehrere Firefox-Kopien gleichzeitig ausgeführt werden.


OK-Button




Danach beendet sich die Session zwangsläufig. Via google erfahre ich schnell:
Ein Bug in "Firefox 1.5" (!) führt zum nicht selbständigen löschen NACH einer Firefox Session des temporären Files .parentlock
welches sich auf einem XServe hier befindet:


/private/Network/Servers/<Servername>/Volumes/<Volumename>/<HomeDir>/~
/Library/Application\ Support/Firefox/Profiles/xyz.default/.parentlock



Lokale Accounts verwenden hier ein verstecktes File (.parentlock), um der Firefox-Session zu melden, dass diese Session erst SAUBER beendet werden muss, bevor eine zweite gestartet werden darf. Klar!


Bei OD-Benutzern wird anstelle eines Files nun ein Symlink auf den eigenen Mac 127.0.0.1 gelegt und nachfolgend ein Zufallsport. Eigentlich sollte die Session nach dem beenden von Firefox doch wieder frei gegeben werden?
Anscheinend geht das aber recht träge in unserem 100mbit geswitchten Netz.


Hat jemand gleiche Sorgen oder gar eine Idee zur Lösung?


Noch eine Beobachtung ist, dass im Firefox xyz.defaults Folder, s.o., immer mehr der 127.0.0.1:portnumber symlinks entstehen??


Achso: Ich verwende Xserve 10.4.11 und Firefox 2.0.0.11
und nebenbei: Natürlich läuft Safari ohne Probleme, wie auch der ganze Rest, incl. RAID :D


Dank für Eure werten Kommentare.
 
Zuletzt bearbeitet:
OD-User und Firefox

hi,

wie häufig – zB auch Office 2004 mit seinem usereigenen Fontsordner – ist bei Applikationen scheinbar keine Vorkehrung für servergespeicherte Homes implementiert.

Im Fall von Firefox hab ich als Umweg die Caches und den Application Support aus der Library des OD-Homes per Symlink auf den /Users/Shared - Ordner der lokalen Maschine gelegt (hängt damit zusammen, dass sich im Unterrichtsbetrieb häufig sehr viele User mit dem selben Account anmelden).

Ähnliche Probleme gibts ja auch mit den Auto-Wiederherstellungsdateien von Office, wenn die einfach in den Userordner geschrieben werden).

gutes Gelingen

Richard
 
vielen Dank, das wäre ein workarround! Die bookmarks verbleiben dann allerdings lokal und wären bei einem roaming profile verloren. Deinen Weg umschreibt übrigens ein "Wurzelsepp" so


Okay, ich bin aber nicht ganz zufrieden. Firefox will die bookmarks.html und die .bak im default-Ordner haben. Symlinks werden einfach überschrieben und das Schreibrecht auf diese Files zu entziehen, würde den Sinn eines User-Booksmarks als Konserve zwar überleben lassen, ist aber wohl am Thema vorbei... (muss beschreibbar sein!)


übrigens:
MS Office 2004 - ist im Vgl. natürlich noch viel schäbiger durch willkürliche (unlogische) Verzeichnispfade einfach nicht durchschaubar.


Gibt es noch Angebote und Lösungen?


P.S.
Für Interessierte empfehle ich hier noch zur Analyse des Vorgangs: "fseventer", um nach zu vollziehen, wo Firefox überall drauf zugreift. Auch sonst Super-Tool, um z. B. die /System/Library/User Template/German.lproy für OD-User zu optimieren
 
Zuletzt bearbeitet:
parentlock vor dem erneuten Firefoxstart löschen

der einzige bisher logische Hinweis mündet in dem Konstrukt, ein Skript vor dem Start des Firefox im Hintergrund aus zu führen, dass das eventuell vorhandene .parentlock einfach löscht


find ~/Library/Application\ Support/Firefox/Profiles -name .parentlock -exec rm '{}' \;


Ich halte das für abenteuerlich, weil es nicht wirklich meine Aufgabe ist mich um diesen Showbremser zu kümmern, aber der Zweck heiligt die Mittel. Und noch schlimmer: Mit verminderten Userrechten ist das Löschen eines versteckten .parentlock nur erschwert durchführbar...


Ich bastle dann mal weiter, da anscheinend nur wenige gleiche Sorgen teilen..
 
Zuletzt bearbeitet:
.parentlock beim Start des Firefox löschen

oh man, es gibt eine Menge Leute, die sich seit Jahren damit rumschlagen. Problem ist nur, es gibt wohl keine 'echte' Lösung...


=> hier mal nach dem Kommentar von "James" suchen:
https://bugzilla.mozilla.org/show_bug.cgi?id=278860


Das dort erwähnte Skript werde ich wohl bei uns einsetzen müssen. Passt mir überhaupt nicht...


Ich kann doch nicht der einzige OS X OD-Admin sein, der das Problem hat?!
 
Zuletzt bearbeitet:
nicht die .parentlock löschen - nutzen!

Warum den Zahn ziehen, wenn man damit besser beißen kann?'


Es ist unsinnig die .parentlock zur Laufzeit löschen zu wollen, um hoffnungsweise Firefox wieder starten zu können. Daher sind die schlauen Tipps sinnlos, denen ich selbst aufgesessen bin, wie lösche mit:


find ~/Library/Application\ Support/Firefox/Profiles -name .parentlock -exec rm '{}' \;


Besser ist es, Firefox genau das tun zu lassen, was es will! Es SOLL auf dem lokalen Mac in seiner Umgebung arbeiten und vor allem eines nicht tun: Die Netzlast unnötig erhöhen. Die Firefox Caches SOLLEN auf der lokalen Maschine verarbeitet werden. Meine oben geschilderten Ansätze führen daher alle in die falsche Richtung!


Es geht ganz anders...


Das Ziel für den geneigten XServe Admin in einer OpenDirectory Umgebung ist es, mittels "LoginHook" und "LogoutHook"
1. die vorhandenen Firefox-Einstellungen auf dem Server lokal zu kopieren
2. zur Laufzeit einer User Session Änderungen (dem Login) in die Firefox-Einstellungen (bookmarks) einfließen zu lassen
3. Nach dem Ende der User Session (dem Logout) diese neuen Firefox-Einstellungen wieder zurück auf den Server zu kopieren, bzw. zu überschreiben und lokale Spuren wieder zu verwischen


Leider ist unter OS X Server/Client 10.4.11 (Stand heute) nicht alles so wunderschön dokumentiert, wie es sein sollte. Mit viel ausprobieren und unendlicher Geduld haben wir es aber geschafft.


Die unendlichen Versuche mancher (anderer Foren-)Mitstreiter scheitern bei einem wesentlichen Merkmal beim "Einloggen - dem Anmeldevorgang" um den es hier gehen soll. Zum Zeitpunkt der Anmeldung ist nämlich der im folgenden dokumentierte Ansatz schlicht übersehen worden: "Die Standard "Environmentvariablen" wie $USER oder $UID stehen noch nicht zur Verfügung! (siehe Unix für Mac OS X-Anwender, Kai Surendorf, S. 159) - Die "environment.plist" fehlt.


Weitere falsche Ansätze sind:
- Die Loginwindow Hooks durch verändern der /etc/ttys sind umständlich und habe ich auch nicht zum Laufen gebracht und ist nur für OS 10.2 und 10.3 empfohlen
- oder unnötig: defaults write com.apple.loginwindow EnableMCXLoginScripts -bool TRUE
- oder unnötig: defaults write com.apple.loginwindow MCSScriptsTrust -string PartialTrust (oder FullTrust nur bei voller Kerberos Funktion im Netz eventuell notwendig zu setzen - hier aber unnötig, bei mir läuft Kerberos natürlich, aber (noch) nicht dafür)
- oder der Versuch, über die Computerliste im WGM, das zentral verfügbare bzw. ein lokal Skript beim OD-User verfügbare Skript zu starten haben bei uns nicht funktioniert, S. 183. ((mag sein, dass wir hier auch nicht ALLES wissen...))
(Quelle: User_Management_Admin_v10.4B.pdf, siehe S. 181 bis 183)
Bombichs LoginWindow Manager funktionierte zunächst in der Zeile "RUN" bei mir nicht. Kann sein, dass diese GUI es auch kann...
Die Logoutfunktion fehlte hier ganz und war mit iHook gelöst. Das war alles zu kryptisch und nicht ausreichend dokumentiert...


Was machen wir hier eigentlich?
Immerhin bedenke: Das Skript soll zur Laufzeit eines OD-Users mit "root-Rechten" vor dem eigentlichen Login ablaufen! Klar, dass sich ein BSD-Unix wie OS X dagegen erstmal wehrt! Wie überredet man den Client dennoch?


LÖSUNG:


die loginwindow.plist findest Du unter
/Library/Preferences/com.apple.loginwindow.plist (bitte Punkt -10- beachten!)


-1- als root local bei einer Mac Arbeitsstation anmelden
-2- dort Verzeichnis /Library/Management anlegen
-3- loginscript_fix_firefox.sh und logoutscript_fix_firefox.sh unter /Library/Management ablegen
-4- wenn Du es wirklich als root angelegt hast, dann brauchst Du nicht mehr folgendes zu tun
chown -R root:admin /Library/Management
-5- chmod -R 755 /Library/Management
(ja: 711 geht für Sicherheitsfanatiker wohl auch)
-6- defaults write com.apple.loginwindow LoginHook /Library/Management/loginscript_fix_firefox.sh
und
defaults write com.apple.loginwindow LogoutHook /Library/Management/logoutscript_fix_firefox.sh
-7- zur Prüfung verwende:
defaults read com.apple.loginwindow
-8- zum löschen falscher Einträge verwende:
defaults delete com.apple.loginwindow LoginHook /Library/Management/loginscript_fix_firefox.sh
-9- Hinweis: Ein OD-User muss sich einmal angemeldet haben, damit das File loginwindow.plist entsteht! Hier wird jedoch das für den Mac relevante loginwindow des root users verändert, das dann für alle sich anmeldenden User an dieser Arbeitsstation, ob lokal oder OD - gilt.
-10- die Angabe "loginwindow" entspricht "loginwindow.plist". das ".plist" wird automatisch bei Verwendung des commands "default" hinzu gefügt
Schreibt jemand unter Punkt -6- etwa
defaults write com.apple.loginwindow.plist LoginHook /Library/Management/loginscript_fix_firefox.sh
entsteht ungewollt und falsch:
eine "com.apple.loginwindow.plist.plist"
-11- Wie werden die Skripte am einfachsten verteilt? Über den ARD Unix-Button kann ein command einfach an alle Macs im Netz mit "root-Rechten"
z. B. wie unter Punkt -6- abgesetzt werden.


Was wurde in den Skripten berücksichtig:


1. Es kann sich ein lokaler User anmelden - und das loginscript_fix_firefox.sh oder das Pendant logout_fix_firefox.sh wird nicht ausgeführt
2. Analog zu 1. soll das Skript immer ausgeführt werden, wenn sich ein OD-User anmeldet
3. die "profile.ini" wird jedes Mal kopiert und überschrieben. Hiermit soll das aktuell benutzte Skript des Users benutzt werden, auch wenn ein Firefox-Update ausgeführt wurde. Der Random-Verzeichnisname von .../Applications Support/Firefox/Profiles/xxx.default wird erhalten und in die profile.ini eingetragen.
4. Als Ziel wurde /Users/Shared/ ausgewählt, weil es zur Laufzeit beschreibbar bleibt und nachfolgend durch das "logoutscript_fix_firefox.sh wird der Ordner /Users/Shared/Firefox/ wieder gelöscht nachdem es zuvor auf den OS X Server ins Homeverzeichnis des Benutzers zurückkopiert wurde!


Beste Quelle war:
http://developer.apple.com/documentation/MacOSX/Conceptual/BPSystemStartup/BPSystemStartup.pdf
hier Seite 49


Thx: 50% Glory&Honour to BB, - lovely Job!


Obligatorischer Nachsatz:
Ich stelle die hier angegebenen Skripte zur freien Verwendung, jedoch ohne jegliche Garantie. Für etwaige Schäden jetzt und in Zukunft übernehme ich in keinster Weise die Verantwortung.
root rules - Du musst wissen, was Du machst, wenn Du root etwas für dich "automatisch" tun lässt




-1- THE LOGINSCRIPT:


name: loginscript_fix_firefox.sh


#!/bin/bash


#created: 08.04.08, rk
#changes: 15.04.08, BB ; 16.04.08, rk


# pls use this script carefully in yr environment. Always checkout in a simple try, what happens really until you understand it
#


# script to copy firefox prefs of an open directory user to his local workstation


USER=${1}


#who is logged in? local user or od-user?
#solution is produced for od-users only!


serverdir="/private/Network/Servers/<name_of_your_server.com>/Volumes/<Volumename>/<HomeDirectoryname>/"
local_users="/Users/"


if echo `ls "$local_users"` | grep -q $USER ; then # -q supresses output
exit 1 # user is local don´t do anything
else
#echo "$USER is a roamed home user"


# findout the random name of firefox/profiles/"xxx".default of logged in od-user
cd /private/Network/Servers/<name_of_your_server.com>/Volumes/<Volumename>/<HomeDirectory>/$USER/Library/Application\ Support/Firefox/Profiles/


for directory in `ls`;
do
if test -d $directory;then
prefix=`echo $directory | cut -d "." -f1`
fi
done


# copy od-users firefox profile.ini
# generate a new profile.ini with users up to date firefox prefix
# and in order that it is an od-user change prefences to the local station
# to avoid the whole effects of firefox is already started and in addition
# using local caches without encumbering the network traffic
# and still staying able by using the effect of real roaming clients in the network


#deleting profile.ini in case of a new firefox installation has been passed
cd /private/Network/Servers/<name_of_your_server.com>/Volumes/<Volumename>/<HomeDirectory>/$USER/Library/Application\ Support/Firefox
rm -f profiles.ini


#create a new matching profile.ini
touch profiles.ini
echo "[General]" > profiles.ini
echo "StartWithLastProfile=1" >> profiles.ini
echo "" >> profiles.ini
echo "[Profile0]" >> profiles.ini
echo "Name=default" >> profiles.ini
echo "IsRelative=0" >> profiles.ini
echo "Path=/Users/Shared/Firefox/Profiles/$prefix.default" >> profiles.ini


# in case of available Firefox-Directory of a former session, - delete it
rm -Rf /Users/Shared/Firefox


# and create a new one for this session
mkdir -p /Users/Shared/Firefox/Profiles
chown -R $USER /Users/Shared/Firefox
chmod -R 755 /Users/Shared/Firefox


# copy Firefox Prefences from OD-User HomeDirectory
/bin/cp -Rp /private/Network/Servers/<name_of_your_server.com>/Volumes/<Volumename>/<HomeDirectory>/$USER/Library/Application\ Support/Firefox/Profiles/* /Users/Shared/Firefox/Profiles/


fi




-2- THE LOGOUTSCRIPT


name: logoutscript_fix_firefox.sh


#!/bin/bash


#created: 08.04.08, rk
#changes: 15.04.08, BB ; 16.04.08, rk


#who is logged in? local user or od-user?
#solution is produced for od-users only!
USER=${1}


serverdir="/private/Network/Servers/<name_of_your_server.com>/Volumes/<Volumename>/<HomeDirectory>/"
local_users="/Users/"


# checkout, who is trying to login
if echo `ls "$local_users"` | grep -q $USER ; then # -q supresses output
exit 1 # user is local don´t do anything
else
#echo "$USER is a roamed home user"




# copy local firefox prefs back to od-users home - firefox prefs
cp -Rpf /Users/Shared/Firefox/Profiles/* /Network/Servers/<name_of_your_server.com>/Volumes/<Volumename>/<HomeDirectory>/$USER/Library/Application\ Support/Firefox/Profiles/


# clean local tmp firefox prefs
rm -Rf /Users/Shared/Firefox


fi


exit 0
 
Zuletzt bearbeitet:
Es ist viel einfacher:
Die Rechte müssen vom OS X Serveradmin bei Verwendung von ACL-Rechten auch richtig gesetzt sein!


Über den Arbeitsgruppenmanager - Filerechte ändern - Sharing
/$USER/Library/Application Support/Firefox/profile.ini
bzw.


Über Serveradmin bei Verwendung von Leopard und Snowleopard auch noch:
/$USER/Library/Application Support/Firefox/Random_name.default/*


Hier müssen die Filerechte günstigerweise auf "777" stehen. Zur Laufzeit reicht 744 - default - nicht!!!


Schade, ich habe das bisher nirgends heraus googeln können, daher lege ich es jetzt wenigstens nach.


Dies mag auch für Linux und Windows Benutzer gelten. Prüft die Filerechte der profile.ini
 
Zuletzt bearbeitet:
Zurück
Oben Unten