Estou tentando definir um controle de acesso refinado para vários repositórios do Mercurial usando o ACL. Quando eu envio as alterações para o repositório, todos os novos arquivos criados sob /myrepo/.hg/store/data
não têm permissões padrão e os usuários não podem acessá-los.
A questão é reproduzível. Suponha que o usuário "myuser" faça parte do grupo www-data. No servidor:
hg init /tmp/test
chown root:root /tmp/test
chmod 770 /tmp/test
setfacl -Rdm g:www-data:rwx /tmp/test
setfacl -Rm g:www-data:rwx /tmp/test
Numa caixa de janelas com o TortoiseHg, defina para usar plink.exe
para ssh com chave partilhada:
hg clone ssh://myuser@servername//tmp/test test
#add file test1.txt and commit to test
hg push ssh://myuser@server//tmp/test
cd ..
hg clone ssh://myuser@servername//tmp/test test2 <---FAIL
Voltar no servidor verificando ACL
getfacl /tmp/test/.hg/store/data/test1.txt.i
# file: tmp/test/.hg/store/data/test1.txt.i
# owner: myuser
# group: myuser
user::rw-
group::rw-
other::r--
Portanto, o novo arquivo não foi criado com as permissões padrão que adicionei à pasta pai /tmp/test
. Esse problema também acontece quando você executa hg pull
no servidor e hg serve
no cliente.
Meu /etc/fstab
está montando a partição com as opções "padrão, acl". Também touch /tmp/test/test1
cria arquivo com permissões padrão apropriadas conforme o esperado
Editar
- Versão Mercurial: 2.0.2-1ubuntu1
- Linux Ubuntu 12.04