Você pode alterar as permissões de um diretório filho que não possui?

1

Picture a scenario in which you have a parent and a child directory. In the parent directory you have given group rwx. Below that directory you have a directory in which the group permissions are --- (so no permissions.) Is this secure? Why or why not?

Essa configuração imediatamente me pareceu não segura; Meu pensamento original era que, como o grupo tinha todas as permissões no diretório pai, elas podem alterar as permissões do filho. Mas quando testamos essa teoria, não funcionou. Eu criei um diretório Test e alterei as permissões com chmod 777 Test ; Em seguida, dentro desse diretório, criei um diretório ChildTest e defino permissões com chmod 700 ChildTest , configurando assim os parâmetros na pergunta. Então meu amigo entrou no meu diretório Test e tentou várias coisas diferentes para tentar acessar o ChildTest: (Nosso ambiente HP / UX usa o ksh)

cp -R ChildTest ~
chmod 777 ChildTest
mkdir New
mv ChildTest New # (also tried this with cp)

Todos falharam porque ele não possuía ChildTest . Então estávamos pensando que talvez fosse mais seguro do que pensávamos. Perguntamos ao professor, que mais uma vez, aludiu ao fato de que não era seguro, mas não nos deu nenhuma informação além de "Você precisa fazer isso com duas pessoas, porque é muito fácil mudar suas próprias permissões "(o que realmente nos confundiu porque ... estávamos?)

De qualquer forma, tenho certeza de que essa configuração não é de fato segura, mas eu simplesmente não sei como provar isso. Eu não quero a resposta dada a mim, mas talvez apenas um empurrão na direção certa ou confirmação de que estou no caminho certo seria ótimo.

    
por Macimoar 19.09.2018 / 22:06

2 respostas

1

De fato: você não pode alterar as permissões do diretório-filho porque as permissões são armazenadas por arquivo / diretório em -que é chamado de "inode". A esse respeito, é seguro.

Mas o nome do diretório-filho é armazenado no diretório-pai, pois um diretório é um arquivo especial que contém os nomes dos arquivos (e também os diretórios-filhos) que ele contém. E no diretório pai, cada usuário / grupo tem permissões de gravação.

Portanto, um usuário que não possui o diretório filho pode renomeá-lo ou remover o diretório filho se ele estiver vazio. Em alguns sistemas, ele pode até mesmo ser movido para outro diretório em que ele / ela tenha permissões de gravação, se estiver no mesmo sistema de arquivos.

    
por 19.09.2018 / 22:52
0

Por POSIX, alterar as permissões do subdiretório não deve funcionar :

Only a process whose effective user ID matches the user ID of the file, or a process with appropriate privileges, shall be permitted to change the file mode bits of a file.

Mas a renomeação deve funcionar, requer apenas acesso de gravação ao diretório que contém:

(root) /tmp# mkdir -p one/two; chmod 0777 one; chmod 0700 one/two
(user) /tmp/one$ mv two three && echo ok
ok

Embora pelo menos no Linux, a configuração do bit fixo evitará isso, já que evitará a remoção de arquivos e diretórios que você não possui:

(root) /tmp# chmod +t one
(user) /tmp/one$ mv three four
mv: cannot move 'three' to 'four': Operation not permitted

Eu admitirei que não tenho idéia sobre os recursos específicos do HP-UX que afetariam isso.

O grande problema de alguém poder renomear o subdiretório depende do que você está fazendo com esses diretórios. O usuário que tem acesso somente ao diretório de nível superior não pode ler nenhum arquivo no subdiretório, portanto, nesse sentido, você está seguro. Mas como eles podem renomear e recriar um diretório com o mesmo nome, eles podem se passar por qualquer coisa que esteja lá.

Isso importaria se, por exemplo, algum serviço externo lê arquivos no subdiretório. Pense em algo como o diretório em que crontab arquivos são mantidos; você não gostaria que alguém conseguisse criar um crontab no nome de outra pessoa.

    
por 19.09.2018 / 23:02