[RESOLVIDO] Adicionar novos privilégios do sistema.



  • Oi,

    alguém já adicionou algum pacote extra, da instalação padrão, na lista de privilégios do sistema?

    mesma dúvida de um tópico antigo, http://forum.pfsense.org/index.php/topic,25160.0.html

    estou querendo adicionar o "OpenVPN Client Export Utility" nessa lista!

    no arquivo vpn_openvpn_export.php adicionei as linhas abaixo

    ##|+PRIV
    ##|*IDENT=page-openvpn-client-export
    ##|*NAME=OpenVPN: Client Export Utility
    ##|*DESCR=Allow access to the 'OpenVPN: Client Export Utility' page.
    ##|MATCH=vpn_openvpn_export.php
    ##|-PRIV

    pois são esses dados que o código system_usermanager_addprivs.php na linha 186 seleciona.

    acredito que isso e apenas o começo… alguma ideia?



  • dmenezes,

    O local para inclusões de permissões é no diretorio /etc/inc/priv, não precisa incluir nada de diferente no arquivo vpn_openvpn_export.php

    segue exemplo do arquivo de permissões
    /etc/inc/priv/postfix.priv.inc

    
    global $priv_list;
    
    $priv_list['page-diagnostics-search-email'] = array();
    $priv_list['page-diagnostics-search-email']['name'] = "WebCfg - Diagnostics: Postfix search email";
    $priv_list['page-diagnostics-search-email']['descr'] = "Allow access to postfix search page.";
    $priv_list['page-diagnostics-search-email']['match'] = array();
    $priv_list['page-diagnostics-search-email']['match'][] = "postfix_search.php*";
    
    $priv_list['page-status-postfix-queue'] = array();
    $priv_list['page-status-postfix-queue']['name'] = "WebCfg - Status: Postfix queue";
    $priv_list['page-status-postfix-queue']['descr'] = "Allow access to postfix queue page.";
    $priv_list['page-status-postfix-queue']['match'] = array();
    $priv_list['page-status-postfix-queue']['match'][] = "postfix_queue.php*";
    
    $priv_list['page-services-postfix-forwarder'] = array();
    $priv_list['page-services-postfix-forwarder']['name'] = "WebCfg - Services: All xml pages (config).";
    $priv_list['page-services-postfix-forwarder']['descr'] = "Allow access to any xml package page.";
    $priv_list['page-services-postfix-forwarder']['match'] = array();
    $priv_list['page-services-postfix-forwarder']['match'][] = "pkg_edit.php*";
    $priv_list['page-services-postfix-forwarder']['match'][] = "postfix*.php*";
    ?>
    


  • Obrigado dude!



  • o correto seria o pacote instalado ja vim com o arquivo .inc e jogar em /usr/local/pkg/priv

    :)



  • Sim. O openvpn não é nativo?
    Se for parte de algum pacote adicional, posta o arquivo que eu publico.



  • OpenVPN sim.

    O pacote e o OpenVPN: Client Export Utility

    E tem outro problema, na WebGUI este pacote fica dentro de OpenVPN

    VPN
    OpenVPN (vpn_openvpn_server.php)

    ou seja para se ter acesso ao OpenVPN: Client Export Utility (vpn_openvpn_export.php)

    vc precisa ter permissao para vpn_openvpn_server.php

    no futuro a opcao OpenVPN deve ser mudada, pois dessa maneira nao e inteligente. (eu nao preciso dar acesso as configuracoes do servidor vpn, apenas para importar os usuarios)

    no meu caso adicionei a opcao Client Export em VPN.

    em fbegin.inc
    $vpn_menu[] = array("Client Export", "/vpn_openvpn_export.php");

    para ser ter um menu direto ao Client Export.

    e criei o openvpnexport.inc

    global $priv_list;

    $priv_list['page-openvpn-client-export'] = array();
    $priv_list['page-openvpn-client-export']['name'] = "WebCfg - OpenVPN: Client Export Utility";
    $priv_list['page-openvpn-client-export']['descr'] = "Allow access to the OpenVPN: Client Export Utility page.";
    $priv_list['page-openvpn-client-export']['match'] = array();
    $priv_list['page-openvpn-client-export']['match'][] = "vpn_openvpn_export.php*";

    ?>



  • dmenezes,

    Vou testar as atualizações e publicar a correção.

    Obrigado pela contribuição.



  • Acabei de publicar a versão 0.9.7 com o arquivo de permissões e o menu na aba vpn.

    EDIT

    Tive que retirar a opção do menu, o pacote é suportado pelo core team e eles não gostaram muito da idéia.

    testei aqui com sucesso a permissão sem a opção de menu. Quando um usuario só tem permissão para o openvpn-client-export, ele cai direto na tela.
    Quando a permissão inclui o dashboard, o usuario cai na tela do client export quando acessa o menu openvpn.



  • Legal!

    Eu tb vejo que nao ha necessidade de criar um outro menu, caso indo na opcao OpenVPN vc tenha acesso ao client export, coisa que nao esta acontecendo!
    apenas criei para facilitar o meu lado com o cliente. :)

    Mas nao obtive sucesso da forma que vc falou… Quando tenho o usuario com a permissao para acessar apenas o Client Export (vpn_openvpn_export.php) (Na opcao OpenVPN)
    e quando vou em OpenVPN esta o link vpn_openvpn_server.php assim indo para o dashboard.

    uma outra solucao para o meu problema seria apenas alterar
    $vpn_menu[] = array("OpenVPN", "/vpn_openvpn_server.php");

    para

    $vpn_menu[] = array("OpenVPN", "/vpn_openvpn_export.php");

    sendo assim o menu OpenVPN cairia direto no link do Client Export
    mas repito solucao para o meu caso... arranjo... e nao para ser modificado dessa forma no projeto...

    .....

    outra coisa...
    acredito que pela organizacao do sistema... os arquivo de privilegios  de pacotes devem ser jogados em /usr/local/pkg/priv
    [2.0-RELEASE][root@pfSense.localdomain]/etc/inc(39): grep -rn '/usr/local/pkg/priv' .
    ./priv.inc:76:if(is_dir("/usr/local/pkg/priv")) {
    ./priv.inc:77:  $dir_array = get_priv_files("/usr/local/pkg/priv");
    ./priv.inc:79:          if (!is_dir("/usr/local/pkg/priv/{$file}") && stristr($file,".inc"))
    ./priv.inc:80:                  include("/usr/local/pkg/priv/{$file}");

    ….

    e no arquivo adicionar a linha em negrito que tb faz parte do utilitario openvpnexport.inc

    global $priv_list;

    $priv_list['page-openvpn-client-export'] = array();
    $priv_list['page-openvpn-client-export']['name'] = "WebCfg - OpenVPN: Client Export Utility";
    $priv_list['page-openvpn-client-export']['descr'] = "Allow access to the OpenVPN: Client Export Utility page.";
    $priv_list['page-openvpn-client-export']['match'] = array();
    $priv_list['page-openvpn-client-export']['match'][] = "vpn_openvpn_export.php*";
    $priv_list['page-openvpn-client-export']['match'][] = "vpn_openvpn_export_shared.php";*

    ?>

    excelente trabalho o seu :)



  • Vou sugerir a alteração ao core team, eles nao gostaram muito da alteração de um pacote 'deles' sem antes discutir sobre o assunto.

    Com relação a permissão, meu teste foi da seguinte forma:

    • cria o Usuario

    • cria um grupo

    • inclui o Usuario no grupo

    • inclui a permissão do openvpn somente ou também inclui o 'dashboard all'

    Aqui funcionou, veja se você consegue o mesmo resultado.



  • @marcelloc

    tenta apenas com essas permissoes

    WebCfg - Dashboard (all) Allow access to all pages required for the dashboard.
    WebCfg - OpenVPN: Client Export Utility

    e ver se funciona…

    comigo nao funcionou!



  • foi exatamente como testei.

    a única diferença é que apliquei as permissões em um grupo.



  • putz! agora estou grilado com isso! hehe nao funciona!
    ja limpei ate cache hahaha

    o seu teste foi com apenas essas 2 opcoes nada mais? :o



  • o seu teste foi com apenas essas 2 opcoes nada mais?

    Sim. Vou fazer denovo mais tarde e posto o resultado.


Log in to reply