Como evitar que os usuários excluam um diretório?

6

Eu tentei "chattr + i DIRNAME", é ótimo, mas não consigo criar arquivos no DIR depois do chattr. O que mais há para impedir que os usuários excluam um diretório?

root@HOST ~] mkdir test
[root@HOST ~] chattr +i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
touch: cannot touch 'sth': Permission denied
[root@HOST ~/test] cd ..
[root@HOST ~] chattr -i test
[root@HOST ~] cd test
[root@HOST ~/test] touch sth
[root@HOST ~/test] 

UPDATE: apenas a exclusão do diretório é importante, então eu ainda preciso que os arquivos sejam apagados

    
por gasko peter 09.11.2012 / 07:21

3 respostas

5

Então, o que há de errado com um simples chown / chmod?:

cd /tmp
mkdir question
sudo chown root:root question
[sudo] password for user: 
chmod 777 ./question
touch sth
rm sth
cd ..
rm question -rf
rm: cannot remove 'question': Operation not permitted

OK, deixe-me dizer o que há de errado com isso: todos os usuários têm acesso a todos os arquivos no diretório question devido às permissões 777 . É melhor

  • crie um novo grupo groupadd question
  • mkdir question
  • chown root:question ./question
  • chmod 770 ./question
  • adicione os usuários que devem ter acesso aos arquivos ao novo grupo: usermod -G group user

O truque importante aqui é que o diretório tem um proprietário diferente de qualquer usuário que tentará excluí-lo.

    
por 09.11.2012 / 09:00
9

Crie um arquivo ".protected" e faça como root

chattr +i .protected

Você pode excluir todos os arquivos, exceto .protected nesse diretório, assim, o diretório não pode ser excluído por nenhum outro usuário.

    
por 30.05.2016 / 07:03
3
chattr +a

deve fazer o trabalho. Você pode criar arquivos dentro, mas não poderá excluí-los.

    
por 09.11.2012 / 07:50