Existe uma maneira de os administradores desabilitarem os usuários de instalarem extensões do Firefox?

13

Existe uma maneira de desativar a instalação de extensões do Firefox por usuários não administradores?

Victor Rodrigues
fonte

Respostas:

12

Tipo de. Você pode aplicar as configurações de bloqueio com o mozilla.cfg. No entanto, isso impedirá que todos os usuários usem recursos bloqueados. É claro que os administradores podem trocar / excluir o arquivo de configuração à vontade.

Aqui está a lista de configurações que implantamos via bloqueio. É um ambiente K-12, portanto, suas necessidades provavelmente variarão.

//
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);

Veja também as definições de configuração bloqueadas nos documentos oficiais do Mozilla.org.

jscott
fonte
6

Esta é uma variação, compilada a partir dos detalhes úteis @ MDN , MozillaZine , PCC-Services , Mike's Musings

Para bloquear / impedir extensões (inclua isso no arquivo lock (policy) ):

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

Barras duplas (//) fora do código indicam comentários.

lockPref()Especifica uma política ie obrigatórias - os usuários não podem modificar, enquanto defaultPref()ou pref()especifica uma preferência ou seja nonmandatory - os usuários podem modificar o valor inicialmente set.

A configuração xpinstall.enabledpara false desativa todas as instalações através do Firefox (em execução), ou seja, instalações de sites, Ferramentas> Complementos> [Obter Complementos | Barra de pesquisa | ícone de engrenagem], Arquivo> Abrir arquivo e arraste e solte. Os formatos do instalador são .xpi e .jar.

A configuração extensions.enabledScopescomo 0 desativa todos os locais (exceto o usuário (perfil) da pasta (escopo 1) e a pasta admin ) de localização offline / manual (uma vez a cada inicialização do Firefox).

O local híbrido do escopo 1 (usuário) (pasta 'extensões' do perfil do usuário) é o único repositório do primeiro método de instalação e é obsoleto ao configurar xpinstall.enabled como false, mas não é escopo (extensions.enabledScopes) como um local descoberto (segundo método de instalação). O segundo bloco de código acima gera um erro sempre que esse local aparece e o Firefox sai.

about: config , about: config Entradas , extensão Descrições de configuração , Instalando extensões , Locais especiais


Extensões aprovadas

Para habilitar extensões aprovadas pelo Firefox install_directory \ browser \ extensions , defina extensions.enabledScopescomo 4 e adicionelockPref("extensions.autoDisableScopes", 11);

Em alternativa (no Windows), para permitir a extensão através do Windows registo aprovado HKLM , definidos extensions.enabledScopesa 8 , e extensions.autoDisableScopespara 7 . O equivalente no GNU / Linux é / usr / share / mozilla / extensions / {ec8030f7-c20a-464f-9b0e-13a3a9e97384}

Para habilitar os dois locais, use 12 e 3, respectivamente.

Também é possível lockPref()ou defaultPref()as configurações dessas extensões que integram sua configuração em about: config; geralmente as chaves específicas em about: config incluem o nome da extensão ou parte do nome ou em: id .


Armazenamento interno, extensões centralizadas ( FoxyProxy como exemplo):

Baixe e descompacte o FoxyProxy em uma subpasta de nível superior em um compartilhamento de rede (por exemplo, compartilhamento de rede FxExts e foxyproxy da subpasta ). Em seguida, renomeie o foxyproxy subpasta com o valor entre as tags em: id no arquivo install.rdf descompactado - foxyproxy é renomeado como [email protected] .

Em seguida, em um arquivo de texto, insira o caminho na primeira linha, ou seja, \\ server \ FxExts \ [email protected] , e também renomeie o arquivo de texto (incluindo a extensão .txt) com o valor em: id - Novo O texto Document.txt é renomeado como [email protected] .

Esses arquivos de texto podem ser distribuídos para os diretórios de instalação \ navegador \ extensões existentes do Firefox ou incluídos no núcleo \ navegador \ extensões do instalador do Firefox .

  • A cada inicialização, o Firefox passa pelos arquivos de texto e exclui (nas contas de administrador) qualquer erro ou se o compartilhamento não estiver disponível no momento. Para evitar isso após o teste, use a política de grupo para [definir Negar exclui permissões nas pastas de extensões e / ou armazenar em cache offline o compartilhamento ( FxExts )].

Alternativa ou adicionalmente, através do registro HKLM: Nome [email protected] e Dados \\ server \ FxExts \ [email protected]

Em um ou ambos os casos (escopos 4 e 8):

  • Para desativar uma extensão, renomeie o nome da extensão de destino. install.rdf para, por exemplo disabled.rdf.

  • Para atualizar uma extensão, exclua o conteúdo em sua subpasta e descompacte o novo XPI. Geralmente o único em: id seria o mesmo.

Se extensions.autoDisableScopesestiver definido como 15 , os usuários poderão procurar e ativar extensões preferidas em Ferramentas (Alt + T)> Complementos: barra de pesquisa. Como alternativa, ative um local para extensões ativadas automaticamente, o que deixaria a outra para extensões ativadas pelo usuário (manualmente).


Filtragem de políticas (aplique seletivamente configurações no arquivo de bloqueio):

No Windows, negue a permissão Ler dados em local-settings.js para que os usuários / grupos sejam isentos. Nos sistemas GNU / Linux, uma opção seria definir as permissões básicas de local-settings.js como 0600 (com raiz sendo o ug), adicionar todos os usuários a um grupo (por exemplo, fxgrp), deixando de fora os usuários isentos, e depoissetfacl -m g:fxgrp:r local-settings.js

Observe que o uso de variáveis ​​de ambiente do sistema operacional não é seguro, pois pode ser ignorado, a menos que medidas extras fora do arquivo de bloqueio (política) sejam implementadas.


Outros: A barra de comando do console do navegador pode ser desativada por uma regra CSS em uma folha de estilos, por exemplo, .jsterm-input-container {display:none;}para centralizar essa folha de estilos através do arquivo de bloqueio (política):

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);

O arquivo Fx.css (folha de estilos) também é carregado no modo de segurança do Firefox e pode especificar o chrome (Firefox UI) e o conteúdo ( páginas internas regras de , páginas da web). Para montagens NFS, SMB ou sistema de arquivos local, usefile:///

[ UserChrome e userContent ] .css tem a maior precedência, por isso seria bom para verificar o cromo pasta também, por exemplo,var profChrmDir = FileUtils.getDir("UChrm", false, false); if( profExtDir.exists() || profChrmDir.exists() )

Nomes e IDs de elementos do Chrome , URLs do Chrome , Trabalhando com URLs do Chrome

As outras ferramentas e o GCLI podem ser desabilitados conforme necessário, através do filtro de arquivo de bloqueio (política) para devtools*enabledem about: config.

Para obter detalhes sobre os nsInterfaces em Components.interfaces. *, Consulte interfaces XPCOM .

PS: Para detectar erros e condições no arquivo .cfg de algumas edições do Firefox, pode ser necessário colocar todo o conteúdo do bloqueio (política) dentro de um bloco try, por exemplo, try { var ...; lockPref(); } catch(e) { Components.utils.import("resource://gre/modules/Services.jsm"); Services.startup.quit(0x03); }opcionalmente, incluir também Services.prompt.alert(null, "Firefox", "Failed to start. Please inform the IT dept.");no bloco catch (e) {}.

XPConnect , XPCOM Interfaces , JSCM , omni.ja , referência JS , JS rápidas , JS

vWil
fonte
6

Impedir que os usuários instalem complementos é mais difícil nas versões posteriores do Firefox. O Firefox não respeita a preferência xpinstall.enabled em algumas versões. (Editar: veja o comentário abaixo: eles respeitam essa preferência a partir da versão 31)

Para obter uma descrição detalhada de como modificar o Firefox para impedir a exibição do Gerenciador de Complementos e como impedir que os usuários instalem complementos, consulte este artigo .

As instruções não são para os fracos de coração, mas funcionam; Eu tenho 700 máquinas bloqueadas em um ambiente K-8 usando essas instruções.

Para obter mais informações sobre como bloquear as configurações do navegador, consulte este artigo .

Tim Dearborn
fonte
Ótima resposta de acompanhamento. Nosso distrito está procurando se livrar do Firefox por essas dificuldades exatas de configuração. Com o Google começando a oferecer seus próprios GPOs , o Chrome provavelmente se tornará a alternativa do IE em todas as máquinas.
jscott
1
Firefox na verdade não honra "xpinstall.enabled" a partir de Firefox 31.
Justin Skiles