Como posso montar no Linux um sistema de arquivos para um processo ou usuário apenas

1

Eu quero ter montagens diferentes vistas apenas por um processo ou usuário específico. Um caso de uso em que estou pensando é quando quero montar um unionfs ou aufs que estará disponível para um usuário. Assim, posso ter várias montagens no mesmo ponto de montagem que são diferentes para usuários diferentes.

    
por Mircea Vutcovici 03.11.2011 / 22:16

3 respostas

2

Veja como habilitar namespaces de montagem por usuário no Ubuntu 12.10 usando pam_namespace:

Edite o /etc/security/namespace.conf

Descomente as últimas linhas. Por segurança, adicione seu usuário atual à lista de exclusões.

/tmp     /tmp-inst/            level      root,adm,myuser
/var/tmp /var/tmp/tmp-inst/     level      root,adm,myuser

Edite /etc/security/namespace.init e altere #!/bin/sh -p para #!/bin/bash --noprofile ou para #!/bin/sh Isso ocorre porque sh é realmente dash .

Para testar a edição /etc/pam.d/su e anexar no final do arquivo:

session required pam_namespace.so

Teste em um usuário de teste:

su - testuser

Como o usuário de teste é executado:

echo diff '<(sort /proc/'$$'/mounts) <(sort /proc/mounts)'

Isso gerará um comando como:

diff <(sort /proc/31987/mounts) <(sort /proc/mounts)

Execute o diff gerado a partir do shell do usuário de teste e da raiz. Do usuário de teste você não terá saída, mas a partir da raiz você verá algo como:

4,7d3
< /dev/sda1 /tmp ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
< /dev/sda1 /tmp/tmp-inst ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
< /dev/sda1 /var/tmp ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
< /dev/sda1 /var/tmp/tmp-inst ext4 rw,relatime,errors=remount-ro,data=ordered 0 0

A pasta test_user /tmp será mapeada como /tmp/tmp-inst/test_user e só será acessível a este usuário.

    
por 27.03.2013 / 04:13
1

Por que não montar apenas em ~ / specificmountpoint? Defina as permissões de acordo. Cada usuário terá o mesmo (quase) ponto de mout.

    
por 03.11.2011 / 23:36
0

Parece que hoje em dia é possível:

  1. Você deve criar um novo namespace de usuário, que fornece permissões de raiz de processo e todos os recursos (somente dentro desse namespace).
  2. Você deve criar um novo namespace de montagem para isolar montagens dentro de seu namespace de montagens globais.
  3. Monte o que você precisa.
  4. Liberar os privilégios de volta ao usuário normal e executar seu aplicativo.

Pelo menos, em teoria. Confira este artigo para mais detalhes: link

    
por 27.03.2013 / 00:33

Tags