Eu não acho que seja possível. A criação e exclusão de arquivos no Unix são controladas pela capacidade de gravar no diretório --- basicamente, o mesmo sinalizador.
Agora, o que você pode fazer é criar dois diretórios - um com permissão de gravação e outro restrito ao root.
[romano:~/tmp/test] % ls -l
total 8
drwxrwxr-x 2 romano romano 4096 Oct 8 18:06 normal
drwxrwxr-x 2 root root 4096 Oct 8 18:06 onlyroot
Você normalmente trabalha em normal
. Suponha que você tenha nele:
[romano:~/tmp/test/normal] % ls
one.txt three.txt two.txt
Você pode excluir arquivos claramente e criar novos; Suponha que você queira proteger " one.txt
" da exclusão. O que você pode fazer é criar um link físico para ele em onlyroot
:
[romano:~/tmp/test/normal] 1 % sudo ln one.txt ../onlyroot
Isso criará outro nome para one.txt
em onlyroot
(usando uma quantidade insignificante de espaço; o arquivo não é copiado). Agora, como usuário normal, você pode excluir one.txt
na pasta normal
, mas terá uma versão intocável sob onlyroot
one.
[romano:~/tmp/test/normal] % ls
one.txt three.txt two.txt
[romano:~/tmp/test/normal] % rm one.txt
rm: remove regular empty file ‘one.txt’? y
[romano:~/tmp/test/normal] % cd ..
[romano:~/tmp/test] % cd onlyroot
[romano:~/tmp/test/onlyroot] % ls
one.txt
[romano:~/tmp/test/onlyroot] % rm one.txt
rm: remove regular empty file ‘one.txt’? y
rm: cannot remove ‘one.txt’: Permission denied