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.