Se o seu diretório estiver em um sistema de arquivos ext4, você pode usar o ACL . Melhor explicado pelo exemplo; meu usuário é romano
e o outro usuário é default
.
Como romano
:
[romano:~/tmp] % mkdir -p a/b/c/d
[romano:~/tmp] % cd !$
cd a/b/c/d
[romano:~/tmp/a/b/c/d] % touch f1
[romano:~/tmp/a/b/c/d] % ls -l
total 0
-rw-rw-r-- 1 romano romano 0 nov 27 17:15 f1
Obviamente eu posso escrever para o diretório d
, é meu ... mas de default
:
default@pern:/home/romano/tmp/a/b/c/d$ touch f2
touch: cannot touch ‘f2’: Permission denied
Sim. Nenhum link simbólico irá alterar o fato de que default
não pode escrever lá.
Agora, como romano
, concedo acesso adicional ao grupo default
:
[romano:~/tmp/a/b/c/d] % setfacl -m g:default:rwx .
(leia como: adicionar rwx
permissão para agrupar default
ao diretório atual .
)
... E agora, como default
:
default@pern:/home/romano/tmp/a/b/c/d$ touch f2
default@pern:/home/romano/tmp/a/b/c/d$ ls -l
total 0
-rw-rw-r-- 1 romano romano 0 nov 27 17:15 f1
-rw-rw-r-- 1 default default 0 nov 27 17:17 f2
A sintaxe da ACL é um pouco convocada, mas é uma ferramenta bastante poderosa. Veja man setfacl
e man getfacl
para uma informação completa e mais exemplos.
No seu caso, se você tiver /path/to/dir/foo
de A: A e quiser que o grupo B tenha acesso de gravação a foo
, deverá:
-
adicione
+rx
permission a cada diretório que o leva para o grupo B:setfacl -m g:B:r-x /path setfacl -m g:B:r-x /path/to setfacl -m g:B:r-x /path/to/dir
-
adicione
+rwx
permssion ao grupo B ao diretório:setfacl -m g:B:rwx /path7to7dir/foo
Aviso no entanto, parece que temos um erro desagradável ao redor ... Veja link . Eu não tenho certeza sobre as conseqüências --- o caso simples acima funcionou ok, mas por favor, verifique.