Por diretórios do usuário tmpfs

5

Sabe-se que o uso do diretório /tmp compartilhado levou a muitas vulnerabilidades de segurança quando nomes de arquivos previsíveis foram usados. E os nomes gerados aleatoriamente não são muito legais.

Estou pensando que talvez seja melhor usar um diretório temporário por usuário. Muitos aplicativos usarão a variável de ambiente TMPDIR para decidir para onde os arquivos temporários serão enviados.

No login, eu poderia simplesmente definir TMPDIR=/temp/$USER , em que /temp teria que conter um diretório para cada usuário com esse diretório sendo gravável para esse usuário e para mais ninguém.

Mas, nesse caso, eu ainda gostaria que /temp fosse um tmpfs mountpoint, o que significa que os subdiretórios não existiriam após a reinicialização e precisariam ser recriados de alguma forma.

Existe algum padrão (de fato) para criar um tmpfs com subdiretórios por usuário? Ou eu teria que criar minhas próprias ferramentas não-padrão para gerar dinamicamente esses diretórios?

    
por kasperd 25.03.2015 / 13:18

2 respostas

4

Você pode usar o pam-tmpdir para isso. Ele cria um diretório para cada usuário que faz o login, no início de sua sessão do PAM.

Veja Como remontar o sistema de arquivos no logout? um pouco mais de contexto ...

No Debian, Ubuntu e derivados está disponível em libpam-tmpdir .

    
por 25.03.2015 / 14:22
-2

Você pode simplesmente colocar em /etc/fstab . Uma linha para um usuário em particular pode se parecer com:

tmpfs /home/username/tmp tmpfs size=[num]%,uid=[num],gid=[num],noauto,user,mode=0700

Colocar uma linha como essa para cada usuário que você queira montar um tmpfs em seu diretório pessoal fará com que seja assim. O usuário nome de usuário poderia fazer apenas mount ~/tmp para montar um tmpfs sobre seu diretório home ~/tmp com uma capacidade de memória do sistema atual de 10%. O modo é definido como 0700 , então somente o usuário (e root, é claro) pode fazer qualquer coisa com o conteúdo dessa montagem. E a montagem não é feita automaticamente - o usuário precisa solicitá-la.

Você desejará substituir tudo isso pelos valores relevantes. Por exemplo, você mesmo pode fazer:

tmpfs /home/kasperd/tmp tmpfs size=25%,uid=1000,gid=1000,noauto,user,mode=0700 0 1

... se o seu usuário e id do grupo forem ambos 1000.

    
por 25.03.2015 / 18:05