permissão necessária para criar diretório

2

Estou tentando criar um subdiretório na árvore de diretórios existente. Eu quero saber se apenas as permissões do diretório onde eu vou estar criando o meu subdiretório ou os diretórios pai também terão algum efeito sobre a permissão para criar o diretório?

Eu estarei fazendo isso programaticamente, então preciso ter certeza de que abordei uma ampla gama de cenários.

    
por sadiq.ali 21.12.2016 / 12:22

1 resposta

3

Sim, eles são importantes. Para criar um diretório, você precisa poder gravar em seu diretório pai. Criar um diretório é como criar um arquivo (afinal de contas, tudo é um arquivo ), portanto, é necessário ter acesso de gravação aos pais. . Além disso, você precisa ser capaz de acessar o diretório pai, o que significa que você precisa executar o acesso a todos os diretórios na árvore:

$ sudo tree -pgu 
.
└── [drwxr-xr-x terdon terdon]  dir1
    └── [drwx------ bob      bob     ]  dir2
        └── [drwxr-xr-x terdon terdon]  dir3

No exemplo acima, dir2 é de propriedade de bob . Isso significa que não posso cd , e não posso cd em seu subdiretório dir2 :

$ cd dir1/dir2/
bash: cd: dir1/dir2/: Permission denied
$ cd dir1/dir2/dir3
bash: cd: dir1/dir2/dir3: Permission denied

Se eu der acesso de execução a dir2 , poderei migrar para dir2 e dir2/dir3 , mas ainda não terei o direito de criar arquivos / diretórios em dir2 :

$ sudo tree -pgu 
.
└── [drwxr-xr-x terdon terdon]  dir1
    └── [drwx--x--x bob      bob     ]  dir2
        └── [drwxr-xr-x terdon terdon]  dir3

$ cd dir1/dir2/
$ ls
ls: cannot open directory '.': Permission denied
$ touch file
touch: cannot touch 'file': Permission denied

Como você pode ver acima, embora eu possa ir para o diretório, não posso listar seu conteúdo porque não tenho acesso de leitura a ele e não consigo criar nada lá porque não tenho acesso de gravação .

Assim, para poder criar um novo arquivo ou diretório dentro de um diretório, você precisa:

  • Execute permissões em todos os diretórios pais de seu diretório de destino.

  • Execute e grave permissões para o diretório de destino.

por 21.12.2016 / 13:08