Individual in the Enterprise
Firefox, Thunderbird have full-fledged graphical settings editors. It is easy for a user to change the behavior of his or her web browser with a few mouse clicks. While this approach is sensible for the home user, GUIs hamper software configuration in the corporate enterprise. Although Mozilla products textually represent preferences in a flat file, discovering the right text and value is not always simple. I will outline some techniques I use to determine preference strings for a given behavior.
Preferences in Mission Control Desktop
Mozilla MCD autoconfig is an invaluable tool to the software administrator. It runs at browser startup setting preferences according to corporate policy. After starting, Firefox saves all settings to the user’s local prefs.js
file. The autoconfig API and user prefs.js
work with text preferences. When you decide to change the application’s behavior your prefs.js
is a good place to look.
Start clean
Quit Firefox. Backup then remove your Firefox profile directory. On linux it is in $HOME/.mozilla/firefox
. Then launch the browser starting with a good autoconfigured profile.
Compare
Take a backup of your user prefs.js from Firefox”s profile directory. ($HOME/.mozilla/firefox//prefs.js
) Make the behavior change and apply. Use diff
to compare the preference files.
An example
Suppose your company decides that Firefox should only keep third-party cookies for the lifetime of the browser. Once the user closes Firefox, it will delete all third-party cookies. Make the change (for version 3.6.3) in Settings –> Privacy –> Check Accept cookies from sites, then check Accept third-party cookies and change the dropdown to Keep until: I close Firefox.
Your preferences should look something like this:
0 apollo firefox/kzssiknu.default % diff -u prefs.js.pre prefs.js --- prefs.js.pre 2010-04-22 12:57:30.000000000 -0500 +++ prefs.js 2010-04-22 12:57:39.000000000 -0500 @@ -230,6 +230,7 @@ user_pref("lightweightThemes.persisted.footerURL", true); user_pref("lightweightThemes.persisted.headerURL", true); user_pref("metrics.upload.enable", false); +user_pref("network.cookie.lifetimePolicy", 2); user_pref("network.cookie.prefsMigrated", true); user_pref("nglayout.debug.disable_xul_cache", true); user_pref("nglayout.debug.disable_xul_fastload", true); |
See that a new preference called network.cookie.lifetimePolicy
was inserted with value 2
. Use these in autoconfig, calling
// Remember third-party cookies until the browser closes lockPref("network.cookie.lifetimePolicy", 2); |
Sometimes it’s not that easy
The above method does not work all the time. For example, Thunderbird’s password settings are not so obvious. My company does not allow password storage so I needed to lock out that behavior.
Inspecting the preferences GUI leads nowhere. My first resource in these cases is the About:config_entries page on MozillaZine. It’s a wild wiki page containing mostly-complete setting documentation for all the Mozilla products. There you will find a table with the right information.
Name | Type | Meaning of Values |
---|---|---|
signon. rememberSignons | Boolean | True: (default): Enable the Password Manager False Opposite of the above |
The About:config_entries page also has pointers to the wiki’s Category:Preferences and The Preferential Project. Each page has something the others lack. When these resources fail, I sign on to irc.mozilla.org (as OccamRazor
, old-school IRC etiquette rules apply.) or as a last resort, hit a search engine.
Document it
When you find the right text to twiddle document the behavior in your autoconfig as I did for the cookie lifetime above.