Para executar um compartilhamento não compartilhado, você precisa ter recursos de root para criar um espaço de montagem separado.
Eu tentei isso que parece fazer o que você quer (eu acho):
Ishtar:> mkdir -p /tmp/unshare/home
Ishtar:> cd /tmp/unshare
Ishtar:/tmp/unshare> sudo unshare -m /bin/bash
Ishtar:/tmp/unshare# mount --rbind /home/packages /tmp/unshare/home
Ishtar:/tmp/unshare# tty
/dev/pts/4
Ishtar:/tmp/unshare# # ls home
BUILD@ RPMS@ build/ linux@ sources/ tmp/
BUILDROOT@ SOURCES@ buildroot/ logs/ specs/
OSbuild/ SPECS@ config-scripts/ perlsrc/ srpms/
OTHER/ SRPMS@ debug@ rpms/ sysvinit-288.spec
Portanto, o processo acima tem '/ home / packages mounted @ / tmp / unshare / home.
Em outra tty-window, com qualquer usuário, posso tentar ver: o que está em / tmp / unshare / home:
Ishtar:/> tty
/dev/pts/5
Ishtar:/> ll /tmp/unshare/home
total 0
Ishtar:/> cd tmp/unshare
Ishtar:/tmp/unshare> sudo
Ishtar:/tmp/unshare# ls home
Ishtar:/tmp/unshare# ll home
total 0
# create file in original "bound" dir from 1st usr above:
Ishtar:/tmp/unshare# touch /home/packages/PACKAGES.DIR
Ishtar:/tmp/unshare# ll home #home still empty
total 0
Ishtar:/> tty
/dev/pts/5
# now on other user again
Ishtar:/tmp/unshare# tty
/dev/pts/4
Ishtar:/tmp/unshare# ls home
BUILD@ RPMS@ buildroot/ perlsrc/ sysvinit-288.spec
BUILDROOT@ SOURCES@ config-scripts/ rpms/ tmp/
OSbuild/ SPECS@ debug@ sources/
OTHER/ SRPMS@ linux@ specs/
PACKAGES.DIR build/ logs/ srpms/
#^^^ see PACKAGES.DIR appear (as created in original dir by another
# user
Depois de ter o seu "diretório privado montado para o usuário em" pts / 4 "você pode mude para o UID que você deseja executar no programa:
Ishtar:/tmp/unshare# su astara
Ishtar:/tmp/unshare> whoami
astara
Ishtar:/tmp/unshare> ls home/PACK*
home/PACKAGES.DIR
Observação de montagem ainda está lá para o usuário unpriv'd.
Para salvar, coloquei o 'su para outro usuário' em um arquivo de script seguido por 'desmontar / tmp / unshare / home', (desde quando o seu OTHERUSER sai, vai se tornar root novamente, e desmontar o arquivo no espaço privado,). Então você pode sair.
Isso chega perto do que você quer? - Você tem que usar 'root' para configurar seu filho env, mas, em seguida, execute o filho - e só ele tem acesso a a montagem criada no novo namespace de montagem.
(update) BTW - apenas notei que unshare tem um usuário -map-root que permite especificamente usar root ou caps para opções de configuração no novo namespace. A manpage diz (sobre esse switch):
....This makes it possible to conveniently
gain capabilities needed to manage various aspects of the newly
created namespaces (such as configuring interfaces in the net-
work namespace or mounting filesystems in the mount namespace)
even when run unprivileged.
Isso pode permitir que você gerencie o seu loop sem ser root (ou assim diz o manpage). O provável CAP_SYS_ADMIN é o limite necessário para fazer isso.