Erros de permissão ao tentar fazer o checkout de um repositório subversion em um compartilhamento CIFS

2

Saudações

Eu tenho um compartilhamento CIFS montado em minha máquina Linux (Fedora 11). Este compartilhamento contém uma cópia de trabalho do Subversion com a qual eu trabalho localmente na máquina remota. A máquina remota é uma caixa do Linux rodando o Samba.

Agora quero trabalhar com o repositório na minha máquina, portanto, não preciso fazer login na máquina remota para fazer checkins e atualizações. No entanto, svn parece ter problemas de permissões ao tentar executar operações de arquivo no compartilhamento.

por exemplo. (na minha máquina)

$ svn update
svn: Can't open file '.svn/tempfile.tmp': Permission denied

No entanto, quando tento editar o mesmo arquivo na linha de comando (por exemplo, com vi ), ele funciona bem e parece que tenho permissões de leitura / gravação completas para esse arquivo.

Eu também tentei fazer um novo checkout na minha máquina no compartilhamento:

$ svn co svn://10.212.52.226/project/trunk project
svn: Can't create directory 'project/.svn': Permission denied

Mas eu posso fazer isso manualmente:

$ mkdir project/.svn

... e funciona.

Eu montei o compartilhamento assim:

mount.cifs //10.212.52.240/myname /mnt/mdev -o "uid=myname,gid=myname,password=mypass

Então, eu sou o proprietário de todos os arquivos no compartilhamento montado.

Por enquanto, posso continuar usando o subversion no sistema remoto, que continua funcionando bem. Mas eu gostaria de fazer isso funcionar. Eu aprecio todas as idéias que você possa ter.

Obrigado

Editar

Obrigado ao JohnnyLambada pela sugestão de usar strace . Aqui está o bit relevante da saída strace para tentar uma verificação de subversão:

open("test/.svn/entries", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
lstat64("test", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
mkdir("test/.svn", 0777)                = -1 EACCES (Permission denied)
write(2, "svn: Can't create directory 'test"..., 59svn: Can't create directory 'test/.svn': Permission denied

Ainda é confuso, pois eu posso criar os diretórios (com os mesmos modos) na linha de comando.

No entanto, observei que usar touch para criar um arquivo temporário causa um erro:

$ touch foo
touch: setting times of 'foo': Permission denied

Embora não tenha sido possível redefinir o registro de data e hora, ele criou o arquivo.

    
por friedo 05.11.2009 / 19:41

2 respostas

1

Eu tive um problema semelhante com um compartilhamento CIFS do meu D-Link DNS 323. Tentei brincar com as várias opções mount.cifs ( manpage ) até atingir nounix , o que funcionou para mim.

nounix: Disable the CIFS Unix Extensions for this mount. This can be useful in order to turn off multiple settings at once. This includes POSIX acls, POSIX locks, POSIX paths, symlink support and retrieving uids/gids/mode from the server. This can also be useful to work around a bug in a server that supports Unix Extensions.

Então, no meu caso, meu /etc/fstab agora é assim:

//192.168.100.101/Volume_1  /nas    cifs    rw,nounix,user=,password=,uid=1000,gid=1000    0   0

Meu problema não era o mesmo que o seu - eu estava fazendo um novo checkout de um repositório svn para um novo diretório:

$ svn co https://example.com/project/trunk /nas/project
svn: Can't change perms of file '/nas/project/.svn/entries': Permission denied
    
por 24.11.2010 / 23:16
1

É difícil saber exatamente o que está errado. Eu tentaria executar o comando sob strace para ver qual chamada de sistema está indo errado e qual é o erro. Assim:

strace svn update >/tmp/strace.out 2>&1

Você terminará com um grande arquivo "/tmp/strace.out". Dê uma olhada lá para o texto "Permissão negada". Logo acima, você deve procurar por qualquer chamada de sistema que causou o erro. Edite sua pergunta com as poucas linhas de saída antes do erro.

    
por 06.11.2009 / 04:31