有没有办法禁止非管理员用户安装 Firefox 扩展?
答案1
有点。您可以使用 mozilla.cfg 应用锁定设置。但是,这将阻止全部用户使用锁定的功能。管理员当然可以随意换入/换出配置文件。
以下是我们通过锁定部署的设置列表。这是一个 K-12 环境,因此您的需求可能会有所不同。
//
lockPref("app.update.auto", false);
lockPref("app.update.enabled", false);
lockPref("app.update.silent", true);
lockPref("browser.cache.disk.capacity", 1000);
lockPref("browser.download.useDownloadDir", false);
lockPref("browser.rights.3.shown", true);
lockPref("browser.search.update", false);
lockPref("browser.shell.checkDefaultBrowser", false);
lockPref("extensions.update.enabled", false);
lockPref("plugin.default_plugin_disabled", false);
lockPref("plugin.scan.plid.all", true);
lockPref("plugins.hide_infobar_for_missing_plugin", true);
lockPref("profile.allow_automigration", false);
lockPref("signon.prefillForms", false);
lockPref("signon.rememberSignons", false);
lockPref("startup.homepage_override_url", "");
lockPref("startup.homepage_welcome_url", "");
lockPref("xpinstall.enabled", false);
lockPref("xpinstall.whitelist.required", true);
另请参阅锁定配置设置转到官方 Mozilla.org 文档。
答案2
这是一个变体,由有用的细节编译而成@分子动力学,MozillaZine,PCC-服务,迈克的沉思
要阻止/防止扩展(将其包含在锁定(策略)文件):
lockPref("xpinstall.enabled", false);
lockPref("extensions.enabledScopes", 0); // Or 4 or 8 for approved extensions
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var profExtDir = FileUtils.getDir("ProfD", ["extensions"], false, false);
if ( profExtDir.exists() )
Tech_a_break; // here anything undefined would suffice
代码外的双斜杠(//)表示注释。
lockPref()
指定政策即强制性的 - 用户不能修改,而
defaultPref()
或pref()
指定偏爱即非强制性的——用户可以修改最初设置的值。
设置xpinstall.enabled
为错误的禁用通过(运行)Firefox 进行的所有安装,即从网站、工具 > 附加组件 > [获取附加组件 | 搜索栏 | 齿轮图标]、文件 > 打开文件和拖放进行安装。安装程序格式为 .xpi 和 .jar。
设置extensions.enabledScopes
为0禁用所有(除了用户(配置文件)文件夹(范围 1), 和管理文件夹) 离线/手动发现(每次启动 Firefox 时一次)位置。
(用户)范围 1 混合位置(用户配置文件‘扩展’文件夹)是第一种安装方法的唯一存储,通过将 xpinstall.enabled 设置为 false 而淘汰,但未将其范围(extensions.enabledScopes)为发现位置(第二种安装方法)。每当出现此位置时,上面的第二个代码块都会抛出错误,Firefox 会退出。
关于:配置,about:config 条目,配置描述扩展,安装扩展,特殊地点
已批准的扩展
通过 Firefox 启用已批准的扩展安装目录\浏览器\扩展,extensions.enabledScopes
设置4, & 添加lockPref("extensions.autoDisableScopes", 11);
或者(在 Windows 中),通过 Windows 注册表启用已批准的扩展香港文学城,extensions.enabledScopes
设置8,extensions.autoDisableScopes
并7. GNU/Linux 中的对应版本是/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
要启用两个位置,请使用12, 和3分别。
也可以在 about:config 中集成其配置的扩展程序的lockPref()
设置defaultPref()
;通常 about:config 中的特定键将包括扩展程序名称或名称的一部分或em:id。
内部商店,集中扩展(福克斯代理举例来说):
下载 FoxyProxy 并将其解压到网络共享中的顶级子文件夹中(例如网络共享響鳴和子文件夹狐狸代理)接下来,重命名狐狸代理子文件夹,其值介于em:id解压后的标签安装.rdf文件 -狐狸代理重命名为[电子邮件保护]。
接下来,在文本文件中的第一行输入路径,即\\服务器\FxExts\[电子邮件保护],并使用em:id价值 -新建文本文档.txt重命名为[电子邮件保护]。
这些文本文件可以分发到现有的 Firefox安装目录\浏览器\扩展或包含在 Firefox 安装程序中核心\浏览器\扩展。
- 每次启动时,Firefox 都会检查文本文件,并在出现错误或共享不可用时删除(在管理员帐户下)。为了在测试后防止这种情况,请使用组策略 [设置否定删除权限扩展文件夹和/或脱机缓存共享(響鳴)].
另外或通过注册表 HKLM:名称[电子邮件保护]和数据\\服务器\FxExts\[电子邮件保护]
在任一情况或两种情况下(范围 4 和 8):
要禁用扩展,请重命名目标扩展的安装.rdf例如disabled.rdf。
要更新扩展,请删除其子文件夹中的内容并解压新的 XPI。通常唯一的em:id是一样的。
如果extensions.autoDisableScopes
设置为15,用户可以通过工具 (Alt + T) > 附加组件:搜索栏搜索并激活首选扩展。或者,为自动激活的扩展启用一个位置,而将另一个位置留给用户(手动)激活的扩展。
策略过滤(有选择地应用锁定文件中的设置):
在 Windows 中,否定这读取数据许可本地设置.js为要豁免的用户/组设置权限。在 GNU/Linux 系统中,一个选项是设置本地设置.js以 0600 为用户组(root 为 ug),将所有用户添加到一个组(例如 fxgrp),排除需要豁免的用户,然后setfacl -m g:fxgrp:r local-settings.js
请注意,使用操作系统环境变量是不安全的,因为它可以被绕过,除非实施锁(策略)文件之外的额外措施。
杂项:浏览器控制台的命令栏可以通过样式表中的 CSS 规则禁用,例如.jsterm-input-container {display:none;}
要通过锁定(策略)文件集中此样式表:
var css = Components.classes["@mozilla.org/content/style-sheet-service;1"]
.getService(Components.interfaces.nsIStyleSheetService);
var ioSvc = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService)
.newURI("file://///server/share/Fx.css", null, null);
css.loadAndRegisterSheet(ioSvc, 1);
FX.CSS(样式表)已加载Firefox 安全模式也可以同时指定铬合金(Firefox UI)和内容(内部页面、网页)规则。对于 NFS、SMB 挂载或本地文件系统,请使用file:///
[用户Chrome和用户内容].css 具有最高优先级,因此最好检查铬合金文件夹,例如var profChrmDir = FileUtils.getDir("UChrm", false, false); if( profExtDir.exists() || profChrmDir.exists() )
Chrome 元素名称和 ID,Chrome 网址,使用 Chrome URL
另一个工具,以及气相色谱法可以根据需要通过锁定(策略)文件 -devtools*enabled
在 about:config 中过滤来禁用。
有关 Components.interfaces.* 中的 nsInterfaces 的详细信息,请参阅XPCOM 接口。
PS:为了可靠地捕获某些 Firefox 版本的 .cfg 文件中的错误和条件,可能需要将整个锁(策略)内容放在 try 块中,例如try { var ...; lockPref(); } catch(e) { Components.utils.import("resource://gre/modules/Services.jsm"); Services.startup.quit(0x03); }
也可以选择包含Services.prompt.alert(null, "Firefox", "Failed to start. Please inform the IT dept.");
在 catch(e) { } 块中。