Crie / home / tmp noexec nodev sem uma partição separada

6

Eu preciso alterar algumas opções de montagem para partes do sistema de arquivos raiz, como / tmp / var e / home (adicionar nodev, nosuid e quota), mas não tenho capacidade de criar uma partição separada e não RAM suficiente para montar / tmp como tmpfs. Eu tentei montar -o bind, noexec, nodev, nosuid / tmp / tmp, mas parece não funcionar, porque depois disso eu ainda posso executar arquivos de / tmp e fazer o dispositivo acena nele. Existe outra maneira de fazer isso?

    
por gordon-quad 13.02.2012 / 12:35

1 resposta

10

Você pode remontar / tmp com as opções bind e noexec, nodev, nosuid, mas não em uma etapa. Devido a algumas limitações da camada VFS do kernel do Linux, você precisa primeiro montar o bind e então remontar com as opções apropriadas.

root@utemp:/# /tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# mount -o bind,noexec /tmp /tmp
root@utemp:/# ./tmp/test.sh 
uid=0(root) gid=0(root) groups=0(root)
root@utemp:/# umount /tmp
root@utemp:/# mount -o bind /tmp /tmp
root@utemp:/# mount -o remount,noexec /tmp
root@utemp:/# ./tmp/test.sh 
bash: ./tmp/test.sh: Permission denied
root@utemp:/# umount /tmp

É inconveniente - em vez de uma linha em / etc / fstab você precisa chamar algum script com dois comandos de montagem por diretório durante a inicialização do sistema.

Mais informações neste artigo LWN . No kernel antigo, isso não funcionaria - o ponto de montagem de ligação sempre tem as mesmas opções de montagem que o sistema de arquivos subjacente.

    
por 13.02.2012 / 13:30