Excluindo os diretórios de outro usuário do meu próprio

6

Eu sou um usuário não-root e criei um diretório no qual outros usuários do meu grupo podem escrever. O diretório é setgid, então os arquivos e diretórios dentro dele têm o mesmo grupo.

Eu posso excluir arquivos colocados nesse diretório, mas se um usuário criar um subdiretório com arquivos, não será possível excluí-los. Existe algo especial que eu possa fazer (além de, digamos, incomodar o usuário em questão ou o administrador do sistema sobre isso) para se livrar desse subdiretório?

EDIT: Inevitavelmente, é claro, alguém pergunta "por quê?"

A pasta compartilhada em questão é um repositório mercurial. Não podemos usar um servidor baseado na chave compartilhada ssh para isso, como o mercurial-server, e não podemos simplesmente hospedá-lo externamente por vários motivos. Mas essa parte funciona bem. Usamos o Redmine para gerenciamento de projetos, mas ele ainda não lê o índice do repositório para o conteúdo do arquivo - ele lê o diretório de trabalho. Portanto, o diretório de trabalho deve ser mantido atualizado. crontab foi desativado pelo sysadmin, então está fora. Então eu ingenuamente coloquei um gancho de changeset no repositório compartilhado que executou um " hg update ". Isso pareceu funcionar bem inicialmente, até que, é claro, alguém empurrou um commit com um novo diretório. Enquanto eu tinha pensamentos vagos de tentar fazer um script escrito para o gancho, eu provavelmente só consideraria caminhos mais seguros.

    
por kwatford 12.04.2010 / 22:30

2 respostas

4

Para excluir um arquivo em um diretório, você precisa ter permissão de gravação nesse diretório. Obviamente, os usuários estão criando diretórios sem que você tenha permissão de gravação. Nesse caso, a resposta para sua pergunta é não, você não pode fazer nada sem falar com o usuário em questão ou com o administrador do sistema.

No entanto, se eu fosse o administrador de sistemas, ficaria preocupado com o que você está fazendo. Não é normal que os usuários criem arquivos em outros diretórios de usuários. Existe uma maneira melhor de fazer o que você está fazendo? Por exemplo, o upload para um aplicativo da Web adequado daria melhor controle e também significa que você não precisa se preocupar com isso.

    
por 12.04.2010 / 23:03
0

Esta não é uma resposta à prova de erros, porque os usuários podem substituir o umask, mas você pode definir o umask de sua pasta "pública" para ser herdada por outros usuários, para que qualquer diretório que eles façam também tenha permissão 777. Isso permitirá que você exclua os arquivos deles.

dir=/tmp/abcd
mkdir -o $dir
chmod 777 $dir
setfacl -d -m o::rwx $dir
setfacl -d -m g::rwx $dir

# let users write to $dir, including making subdirs underneath
# examples:
sudo -u other_guy mkdir -o $dir/foo
sudo -u other_guy touch $dir/foo/bar

rm -rf $dir

Sem as linhas setfacl , isso não funcionará, porque $dir/foo/bar pode ser excluído por qualquer pessoa além de other_guy .

Isso quebra, é claro, se o usuário decidir mudar as permissões dos arquivos de propósito.

    
por 04.04.2017 / 21:24

Tags