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 root
usuário - use com cuidado.
touch test && chattr +i test
isso gera um erro; chattr: Operation not permitted while setting flags on test
. Você precisa sudo
disso. Além disso: ainda é possível excluir o arquivo: sudo chattr -i test && rm test
funciona.
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 test
pode impedir a exclusão, mas requer sudo
. Um simples sudo chattr -i test
torna 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 sudo
se 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-file
e você /a/b
não pode ser gravado por ninguém, mas todos têm acesso de gravação /a
, eles podem renomear /a/b
para outra coisa, recriar o próprio /a/b
e criar o seu /a/b/the-file
lá.