Sem usar o sudo, de preferência?
Sem usar o sudo, de preferência?
Respostas:
Experimentar:
chattr +i filename
Isso, porém, tornará o arquivo impossível de excluir, mesmo pelo rootusuário - use com cuidado.
touch test && chattr +i testisso gera um erro; chattr: Operation not permitted while setting flags on test. Você precisa sudodisso. Além disso: ainda é possível excluir o arquivo: sudo chattr -i test && rm testfunciona.
Não, isso não é possível. Impossível para usuários normais excluir um arquivo: claro.
Você vai precisar sudo impedir que os usuários excluam arquivos. Seu administrador sempre poderá excluir um arquivo.
sudo chattr +i testpode impedir a exclusão, mas requer sudo. Um simples sudo chattr -i testtorna possível remover o arquivo. Nenhum outro usuário além do administrador pode usarchattr .
E ... simplesmente reiniciar e entrar no modo de recuperação permitirá que essa pessoa possa excluir esse arquivo. Seria um risco de segurança se houvesse um método para nunca conseguir excluir um arquivo.
É um pouco grosseiro, mas está próximo - se você remover o acesso de gravação no diretório, os arquivos dentro dele não poderão ser excluídos. E não é necessário sudose você é o proprietário:
=^_^= izkata@izein:~$ mkdir test
=^_^= izkata@izein:~$ touch test/delme
=^_^= izkata@izein:~$ chmod a-w test
=^_^= izkata@izein:~$ echo 'Hello' > test/delme
=^_^= izkata@izein:~$ cat test/delme
Hello
=^_^= izkata@izein:~$ rm test/delme
rm: cannot remove `test/delme': Permission denied
Assim, você pode definir permissões no arquivo em si, como desejar.
Além disso, como afirma @Rinzwind, há certamente muitas maneiras de contornar isso.
Para excluir um arquivo, você precisa de permissão de gravação em todos os diretórios aos quais o arquivo está vinculado. Para desvinculá-lo de um diretório, você precisa de permissão de gravação nesse diretório.
Desde que você conceda permissão de gravação (ou até propriedade) ao arquivo, mas não ao diretório ou aos diretórios aos quais o arquivo está vinculado, esse arquivo não poderá ser excluído.
A melhor maneira de conseguir isso seria vincular esse arquivo a um diretório que pertence à raiz e que não pode ser gravado por ninguém. Em vez disso, você poderia torná-lo propriedade de você, o que significaria que você e o root poderiam excluí-lo.
Isso ainda permitirá que outros usuários vinculem esse arquivo a outros diretórios e desvinculem-no a partir de então, mas ainda não poderão excluir o arquivo, pois poderão desvinculá-lo do seu próprio diretório.
Observe que, para que isso funcione completamente, a permissão de gravação de cada componente do caminho no arquivo deve ser controlada. Porque, por exemplo, se o arquivo é /a/b/the-filee você /a/bnão pode ser gravado por ninguém, mas todos têm acesso de gravação /a, eles podem renomear /a/bpara outra coisa, recriar o próprio /a/be criar o seu /a/b/the-filelá.