Bocado pegajoso e chattr

2

Desejo proteger minhas pastas em $ HOME de uma exclusão acidental. Eu apliquei chattr +i neles, mas notei que o último é aplicado recursivamente, assim, de fato, a pasta não pode ser excluída, mas também não consigo escrever nela.

Eu também tentei aplicar um sticky bit com chmod 1775 e alterar a propriedade da pasta com chown root foldername . Normalmente, com o sticky bit ativado, somente o dono da pasta pode deletá-lo, mas, estranhamente, no meu caso, embora a pasta seja de root, eu posso deletá-la com o meu usuário normal.

Notei que as pastas dos usuários na partição /home , embora sejam de propriedade do usuário atual e tenham permissões rwx para o proprietário, não podem ser excluídas / alteradas. Como isso é conseguido?

Estou usando o Arch Linux de 32 bits e o sistema de arquivos é o ext4.

    
por droidlock 26.10.2011 / 16:43

3 respostas

3

I want to protect my folders in $HOME from an accidental deletion. I applied chattr +i on them but i noticed that the last is applied recursively, thus, indeed the folder can't be deleted but also i can't write in it.

Não é recursivo, é apenas como os diretórios funcionam. Um diretório é basicamente um arquivo especial com uma lista de nomes e inodes. (Pelo menos costumava ser; você ainda pode cat diretórios em alguns BSDs.) Quando você tenta criar, renomear ou excluir um arquivo, você não está alterando o arquivo em si, você está alterando seu diretório pai. Se o diretório estiver marcado como imutável, você não poderá alterá-lo, mas os subdiretórios ainda poderão ser modificados.

I also tried to apply a sticky bit with chmod 1775 and change the ownership of the folder with chown root foldername. Normally, with sticky bit enabled, only the owner of the folder can delete it but, strangely, in my case although the folder is owned by root, i can delete it with my normal user.

O bit pegajoso permite excluir objetos se você possui o próprio objeto ou seu diretório pai.

I noticed that the users folders in /home partition, although they are owned by the current user and have rwx permissions for the owner, they can't be deleted/changed. How is this achieved?

Veja acima - ao deletar um objeto do sistema de arquivos, você deve ter permissão de 'gravação' no diretório pai , não no próprio objeto. Nesse caso, /home é de propriedade de root e você só tem permissões de "leitura" + "execução".

Em conclusão,

backups.

objeto do sistema de arquivos: n. um arquivo, diretório, nó de dispositivo, link simbólico, canal, soquete Unix ou qualquer outra coisa que possa ser armazenada no sistema de arquivos.

    
por 26.10.2011 / 19:06
0

Para criar, remover ou renomear um item em um diretório, você deve ter permissão de gravação no diretório. Geralmente /home não é gravável para usuários comuns, portanto você não pode criar, remover ou renomear um diretório em /home .

O bit adesivo em um diretório adiciona um requisito adicional de que apenas o proprietário do arquivo ou do diretório (ou o superusuário) pode remover ou renomear itens existentes no diretório. Isso não impedirá que você exclua as coisas que você possui. Ele é destinado a diretórios públicos como /tmp , para permitir que qualquer pessoa crie novos arquivos e para remover ou renomear arquivos de sua propriedade, mas para impedir a remoção ou a renomeação de arquivos pertencentes a outros usuários.

Tornar um diretório imutável ( chattr +i ) significa que ele não pode ser alterado, portanto nenhum arquivo novo pode ser criado nele e nada nele pode ser removido ou renomeado. Se você quiser impedir que um diretório seja excluído, mas ainda queira ser capaz de criar, remover e renomear arquivos dentro dele, você pode fazer isso criando um arquivo imutável dentro do diretório, já que um diretório não pode ser removido enquanto houver é algo nele. Como alternativa, você pode criar um subdiretório sem permissão de gravação que contenha pelo menos um arquivo.

    
por 26.10.2011 / 19:07
0

Um pouco atrasado para a parte, mas chattr +a (opcionalmente, -R para recursiva) permitirá que você crie novos arquivos, mas não os exclua.

As forças% flag +a são anexadas apenas ao diretório (enquanto +i força a imutabilidade).

O que isto significa é que quando você tenta excluir um arquivo, o sistema operacional tentará removê-lo do diretório que falhará, fazendo com que toda a operação de exclusão falhe.

    
por 05.07.2014 / 01:52