evita erros chown / chmod access denied com montagem cifs

2

Eu tenho um diretório de usuários montado no ubuntu 12.04 com cifs. / etc / fstab contém uma linha;

//cb/share /home/cb cifs user=ubuntu,password=abc123,uid=cb,gid=users 0 0

O compartilhamento é montado e funciona bem, exceto pelos comandos chown / chmod, que falham com;

$ sudo touch /home/cb/foo
$ sudo chown cb /home/cb/foo
chown: changing ownership of '/home/cb/foo': Permission denied

Esqueça que o cifs está comprimindo o uid e gid para os valores corretos (cb: users) já. Existem alguns scripts e utilitários preexistentes que preciso usar e que falham por causa do status de saída diferente de zero retornado por chown / chmod.

Eu ingenuamente tentei montar em outro lugar (/ mnt / cb) e, em seguida, usar bindfs para montá-lo novamente, mas isso também não funcionou.

sudo bindfs -o perms=0750,mirror=cb,group=users /mnt/cb /home/cb

Note que a única solução que estou procurando aqui é alguma maneira de configurar o servidor / montagem para que o chmod / chown falhe silenciosamente - isto é, retorne o status de saída zero.

    
por CAB 14.06.2013 / 00:30

1 resposta

0

Bem, a resposta trivial é antecipar o% realchmod e chown com outros programas que não falham. Estes podem ser scripts. Em /home/cab/bin (ou qualquer outro diretório conveniente que você tem acesso total a), crie scripts chamados chmod e chown que dizem apenas

#!/bin/sh

Você pode adicionar exit 0 , se desejar, mas 0 será o status de saída padrão se o script não fizer nada. E, claro, adicione /home/cab/bin ao início da variável de ambiente PATH .

Se você quiser poder chmod e chown quando puder, faça os scripts dizerem [Editar]

#!/bin/sh
/bin/"$(basename "$0")" "$@"
exit 0

substituindo /bin pelo diretório em que estão os chmod e chown reais. Isso executa o comando real com os argumentos para o script, e, em seguida, sai com um status de 0, independentemente do status de saída do programa.

E como os dois scripts são idênticos (desde que os comandos reais chmod e chown estejam no mesmo diretório em seu sistema), você pode escrever um e fazer do outro um link para ele.

    
por 14.06.2013 / 00:46