Interpretação 1: um diretório é um subespaço do sistema de arquivos. Ele pode ser subdividido em subsubspaces criando subdiretórios nele. O proprietário do diretório foo
deve ter controle sobre tudo dentro do subespaço: foo/bar
, foo/bar/qux
, etc.
Interpretação 2: um diretório é um subespaço do sistema de arquivos. Todo diretório é anexado a algum outro diretório, chamado seu pai. O proprietário do diretório foo
tem controle sobre tudo dentro do subespaço; no entanto, para um subdiretório foo/bar
, o proprietário de foo
tem controle sobre se bar
pode ser anexado a foo
, mas não sobre o que entra em bar
: somente o proprietário bar
tem controle sobre .
Evidências em favor da interpretação 2: como você observou, o modo como as permissões funcionam. Além disso, o fato de alguns sistemas de arquivos Unix permitirem que um diretório seja anexado a mais de um pai: isso é chamado de ter vários hard links. (Ter vários hard links é comum para arquivos regulares, mas geralmente é desencorajado ou proibido para diretórios principalmente por causa do risco de criar loops, onde um diretório é seu próprio avô N vezes removido - então você não pode obtê-lo a partir da raiz diretório, que é uma expectativa muito comum.Existe também o problema de o que fazer se um diretório tiver 0 hard links, mas não estiver vazio: como o diretório não está ligado, você deseja excluí-lo, mas o que você faz com seu diretório? conteúdo?)
Evidência em favor da interpretação 1: na prática, os diretórios têm um único pai e, assim, formam uma estrutura em árvore. E você não pode acessar foo/bar/qux
a menos que tenha permissão de execução em foo
, bem como bar
(bem, exceto que há maneiras obscuras de ter acesso a bar
sem ter acesso a foo
). Então os níveis superiores são importantes.
Em uma nota mais prática, na sua situação, o usuário A pode fazer
mkdir garbage mv foo/bar garbage/ rmdir foo