Como falsificar / simular um diretório usado por um aplicativo binário como outro diretório?

9

Suponha que haja um aplicativo binário que sempre grava seus dados /tmp.

Como eu poderia falsificar / zombar /tmppor causa desse binário como algum outro diretório (por exemplo home/tmp)?

Vamos supor que não tenho como modificar esse binário para forçá-lo a usar um diretório diferente.

Nobilis
fonte

Respostas:

11

Você pode executar o aplicativo em um chrootambiente, ou seja, o que /o aplicativo vê não é real /. Você cria uma nova hierarquia completa do sistema de arquivos e monta ( --bind) tudo o que precisa nele. O ponto relevante é: Você pode montar o real ~/tmpao /tmpno chrootmeio ambiente.

Em vez de usar chroot(que requer privilégio de superusuário), você pode fazer mais ou menos o mesmo com os contêineres do Linux ( lxc). Não estou familiarizado, lxcmas como é um processo normal do usuário no sistema host, você não precisa ser o superusuário para essas configurações no contêiner.

Hauke ​​Laging
fonte
Ótima resposta, eu não tinha ouvido falar de um chrootou de lxcser capaz de fazer isso. Também é muito bom saber que existe uma maneira de realizar isso sem ser um superusuário.
Nobilis
3
@Nobilis 98 upvotes falta para este a ser reconhecida como uma grande resposta ...
Hauke Laging
2
Cuidado, porém, que chrootrequer configuração adicional (você está substituindo toda /, não apenas /tmp, portanto, qualquer acesso a /etc, /var, etc, também vai estar dentro da "prisão") e cria preocupações do seu próprio (o programa "preso" de segurança pode poderá manipular partes do sistema de arquivos que normalmente seriam proibidas se você não tomar cuidado com as permissões ao configurar seu falso /).
IMSoP
@IMSoP Você se importaria em explicar "pode ​​manipular partes do sistema de arquivos que normalmente seriam proibidas" com mais detalhes?
Hauke ​​Laging
@HaukeLaging Se o novo /não estiver restrito a ser gravado apenas por root, o usuário "preso" poderá criar ou substituir arquivos que parecem estar em locais importantes do sistema, como /etc/passwd; isso pode ser usado para escalonamento de privilégios que não seria possível fora do chroot. Muitos servidores FTP do Linux, que tradicionalmente usam chrootpara ocultar o restante do sistema de arquivos, agora se recusam a fazê-lo se o diretório for gravável por um usuário não raiz.
IMSOP
8

A maioria dos softwares compatíveis com POSIX honraria a variável de ambiente TMPDIR , por exemplo

env TMPDIR=~/mytmp  /path/to/application
HBruijn
fonte