LD_LIBRARY_PATH não configurado por tela

9

A execução de screen no bash limpa a variável LD_LIBRARY_PATH. Eu fiz algumas leituras e parece que isso é um comportamento esperado, mas eu preciso contornar isso.

A solução alternativa é adicionar a declaração LD_LIBRARY_PATH a ~/.bashrc . No meu caso, o LD_LIBRARY_PATH muda bastante entre o lançamento do shell e quando eu invoco a tela, então eu preciso colocar o valor atual de LD_LIBRARY_PATH na sessão screen .

    
por Andrew Wood 20.01.2011 / 15:52

3 respostas

12

screen não desmarca a variável de ambiente; ele é removido pelo próprio Linux.

Na maioria dos sistemas, o executável /usr/bin/screen é instalado com o bit setgid para o grupo utmp , para poder modificar o banco de dados utmp . Ele também usa setgid para controlar o acesso ao diretório de soquete ( /var/run/screen/ ).

No Linux, quando um programa setuid (ou setgid ) é executado, ele não recebe determinadas variáveis de ambiente (incluindo LD_LIBRARY_PATH , várias outras variáveis LD_* e HOSTALIASES ), para reduzir os possíveis pontos de ataque: Caso contrário, você poderia escrever uma pequena biblioteca e enganar su ou sudo para chamar suas funções "aprimoradas" dessa maneira.

Você pode remover o bit setgid de screen , mas você terá que tornar o diretório de soquete totalmente acessível a todos (modo 0777). Não deve ser um risco de segurança, pois o screen também verifica o UID do próprio invasor.

No entanto, você deve não tornar o banco de dados utmp mundialmente editável.

    
por 20.01.2011 / 19:42
4

No seu .screenrc , você pode usar o comando setenv para definir um valor no ambiente da tela.

setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH_SCREEN

Isso é definido antes de seu shell ser iniciado. Obviamente, LD_LIBRARY_PATH_SCREEN precisa ser definido antes de você iniciar a tela.

    
por 06.11.2013 / 01:49
1

Tente export ing a variável de ambiente em que você está interessado.

export LD_LIBRARY_PATH
    
por 20.01.2011 / 19:47