Existe alguma maneira de impedir a exclusão de certos arquivos do diretório de propriedade do usuário?

38

Digamos que o usuário tenha Directory1 e contenha Arquivo1 Arquivo2 CantBeDeletedFile Como fazer para que o usuário nunca tenha permissão para excluir o CantBeDeletedFile ?

Se eu alterar a propriedade de Directory1 e remover as permissões de gravação, os usuários não poderão excluir nenhum arquivo. Eles também não seriam capazes de adicionar novos arquivos, etc.

Eu só quero poder definir alguns arquivos que nunca seriam excluídos.

Descrição mais específica.

Estou criando perfis de usuário. Estou criando arquivos de ativador de aplicativos no Desktop . Então, eu quero definir alguns arquivos de inicialização (.desktop) e torná-los para que o usuário possa apenas iniciá-los e eles não poderiam renomear nem excluir, apenas inicie.

Atualmente, o usuário possui o diretório que contém qualquer arquivo. Ele pode deletar.

Se não houver uma maneira genérica para todos os * nix, é um Linux e ext4 FS.

    
por bakytn 05.09.2011 / 01:23

4 respostas

37

(Eu não gosto de invadir a casa dos usuários, acho que eles devem fazer o que quiserem com suas casas ... mas de qualquer forma…)

Isso deve funcionar no linux (pelo menos). Estou assumindo user já é um membro do grupo user . Uma solução é alterar a propriedade de Directory1 e definir o bit no diretório:

chown root:user Directory1
chmod 1775 Directory1

Em seguida, use:

chown root Directory1/CantBeDeletedFile

Agora, user não poderá remover este arquivo devido ao sticky bit¹. O user ainda é capaz de adicionar / remover seus próprios arquivos em Directory1 . Mas observe que eles não poderão excluir Directory1 porque ele nunca será esvaziado.

-
1. Quando o bit adesivo é ativado em um diretório, os usuários (que não sejam o proprietário) só podem remover seus próprios arquivos dentro de um diretório. Isso é usado em diretórios como /tmp cujas permissões são 1777 = rwxrwxrwt .

    
por 05.09.2011 / 02:47
57

Tornar o arquivo imutável com o atributo i .

chattr +i file.desktop

veja man chattr para mais informações.

    
por 05.09.2011 / 03:08
2

Eu não acho que haja uma maneira de evitar a exclusão de um arquivo individual com permissões de arquivo do Unix, mas posso pensar em uma solução alternativa: escrever um daemon que o substitua quando é removido. inotify-tools é perfeito para esse tipo de coisa se você estiver no Linux.

Existem algumas maneiras de substituir o item excluído: copiar um novo no lugar ou manter o arquivo real em um local seguro e apenas copiar um link no diretório do usuário. Para o link, você pode usar um link simbólico ou link físico. Eu começaria com um link simbólico, mas alguns (muito poucos) programas não lidam com links simbólicos corretamente. Se você achar que o usuário encontra um programa como este, use um link físico.

    
por 05.09.2011 / 01:41
0

Um simples

chmod -i filename

irá "proteger" esse arquivo da exclusão.

rm filename
rm: remove write-protected regular file 'filename'?

Você ainda pode excluí-lo, mas pelo menos precisa ter certeza do que está fazendo.

    
por 30.08.2018 / 05:13