Como corrigir o Openvpn com direitos elevados sendo um usuário comum?

Como corrigir o Openvpn com direitos elevados sendo um usuário comum?
checking tap-windows.h presence... no
checking for tap-windows.h... no
checking whether TUNSETPERSIST is declared... yes
checking for setcon in -lselinux... yes
checking for pam_start in -lpam... no
checking for OPENSSL_CRYPTO... yes
checking for OPENSSL_SSL... yes
checking for EVP_CIPHER_CTX_set_key_length... yes
checking for ENGINE_load_builtin_engines... yes
checking for ENGINE_register_all_complete... yes
checking for ENGINE_cleanup... yes
checking for ssl_init in -lpolarssl... no
checking for aes_crypt_cbc in -lpolarssl... no
checking for lzo1x_1_15_compress in -llzo2... no
checking for lzo1x_1_15_compress in -llzo... no
checking for PKCS11_HELPER... no
checking git checkout... yes
configure: error: libpam required but missing
[mirror@innov openvpn]$ ./configure --help | grep libpam
  --enable-pam-dlopen     dlopen libpam [default=no]
              C compiler flags for libpam
  LIBPAM_LIBS linker flags for libpam
[mirror@xxx openvpn]$ ./configure --prefix=/home/mirror/build/ins/ins_vpn --disable-lzo 

erro: libpam necessária, mas ausente

Simplesmente não tenho privilégio para instalar o pacote chamado libpam, então posso construir o libpam e instalá-lo no diretório inicial e, em seguida, construir o openvpn com base nele?

Responder1

Sim, claro que você pode compilar coisas como um usuário normal e apontar o script de configuração para ele. Execute configure --helpe você provavelmente verá onde ele fala sobre como definir variáveis ​​de ambiente como LIBPAM_LIBSe LIBPAM_CFLAGS. Defina-os manualmente para o local onde estão as bibliotecas compartilhadas (arquivos .so) e os cabeçalhos (arquivos .h) de uma libpam compilada.

Aconselho que você configure um "prefixo local" onde o openvpn e todas as suas dependências possam ser agregadas. Pense neste prefixo como seu próprio /usrdiretório.

Parece que na sua configuração você já está definindo --prefix para /home/mirror/build/ins/ins_vpn, então /home/mirror/build/ins/ins_vpn/include seria o valor a ser definido para a variável de ambiente LIBPAM_CFLAGSe /home/mirror/build/ins/ins_vpn/lib seria o valor a ser definido para a variável de ambiente LIBPAM_LIBS. Claro, os nomes das variáveis ​​de ambiente podem variar dependendo do que configure --helpestá escrito. Então execute e leia.

Você também pode definir PKG_CONFIG_PATHa variável de ambiente como e a etapa /home/mirror/build/ins/ins_vpn/lib/pkg-configlibpammake installdevecoloque libpam.pc nesse diretório durante a instalação (se você configurá-lo com --prefix=/home/mirror/build/ins/ins_vpn). Ao definir PKG_CONFIG_PATH, você está instruindo o pkg-configutilitário a procurar arquivos nesse diretório .pc, que contêm dados sobre a compilação e sinalizadores de vinculação de programas. Muitas bibliotecas padrão usam pkg-config e autoconfig, então você poderá repetir essas etapas para qualquer outro pacote.

Obter uma versão adequada dos fontes do libpam provavelmente é apenas uma questão de baixar o rpm do código-fonte e descompactar os fontes, ou apenas descobrir qual versão do libpam upstream sua distro usa e pegar essa versão (ou uma versão posterior provavelmente funcionará também).

Observe que, como você não tem acesso root na caixa, provavelmente não poderá manipular dispositivos tunou tapdispositivos (a menos que o administrador do sistema lhe conceda privilégios); portanto, provavelmente não será capaz de criar um túnel VPN útil sem root, de qualquer maneira, mesmo se você compilar o openvpn :)

Responder2

yum instalar gcc make rpm-build autoconf.noarch zlib-devel pam-devel openssl-devel -y

Isso resolverá todas as dependências

Responder3

Eu estava tentando instalar o OpenVPN 2.3.0 por meio de um ./configurecomando como root e estava recebendo o mesmo erro sobre o libpam necessário, mas ausente. Eu instalei o pacotelibpam0g-deve executei ./configurenovamente com sucesso.

Eu sei que você disse que não tem root, mas se você puder instalar esse pacote, provavelmente permitirá que você conclua o ./configureque está tentando fazer.

informação relacionada