chattr (Change Attribute) é um utilitário de linha de comando que é usado para definir / remover certos atributos para um arquivo no sistema Linux para garantir a exclusão ou modificação acidental de arquivos e pastas importantes, mesmo que você esteja conectado como usuário root.
Em sistemas de arquivos nativos do Linux, ou seja, ext2, ext3, ext4, btrfs, etc. suporta todos os sinalizadores, embora todos os sinalizadores não sejam compatíveis com todos os FS não nativos. Não se pode excluir ou modificar o arquivo / pasta uma vez que os atributos são definidos com o comando chattr, mesmo que se tenha permissões totais sobre ele.
Isso é muito útil para definir atributos em arquivos de sistema como arquivos passwd e shadow nos quais as informações do usuário estão contidas.
# chattr [operador] [sinalizadores] [nome do arquivo]
A seguir está a lista de atributos comuns e sinalizadores associados que podem ser ativados / desativados usando o comando chattr.
Aqui, vamos demonstrar alguns dos exemplos de comando chattr para definir / cancelar a definição de atributos para um arquivo e pastas.
Para fins de demonstração, usamos a pasta demonstração e arquivo important_file.conf respectivamente. Antes de configurar os atributos, certifique-se de verificar se os arquivos existentes têm quaisquer atributos definidos usando 'ls -l‘Comando. Você viu os resultados, atualmente nenhum atributo está definido.
[[email protegido] tecmint] # ls -l. total 0. drwxr-xr-x. 2 root root 6 31 de agosto 18:02 demo. -rwxrwxrwx. 1 root root 0 31 de agosto 17:42 important_file.conf.
Para definir o atributo, usamos o + assinar e desarmar use o – assine com o comando chattr. Então, vamos definir bits imutáveis nos arquivos com + i sinalizadores para impedir que alguém exclua um arquivo, mesmo um usuário root não tem permissão para excluí-lo.
[[email protegido]tecmint] # chattr + i demo / [[email protegido] tecmint] # chattr + i important_file.conf.
Observação: A parte imutável + i só pode ser definido pelo usuário superusuário (ou seja, root) ou um usuário com privilégios sudo pode definir.
Depois de definir o bit imutável, vamos verificar o atributo com o comando ‘lsattr‘.
[[email protegido] tecmint] # lsattr. i ./demo. i ./important_file.conf.
Agora, tentei deletar com força, renomear ou alterar as permissões, mas não vai permitir diz “operação não permitida“.
[[email protegido]tecmint] # rm -rf demo / rm: não é possível remover âdemo / â: Operação não permitida.
[[email protegido] tecmint] # mv demo / demo_alter. mv: não é possível mover âdemo / â para âdemo_alterâ: Operação não permitida.
[[email protegido] tecmint] # chmod 755 important_file.conf. chmod: alterando as permissões de âimportant_file.confâ: Operação não permitida.
No exemplo acima, vimos como definir o atributo para proteger e evitar que os arquivos sejam excluídos acidentalmente, aqui em neste exemplo, veremos como redefinir (cancelar a definição de atributos) permissões e tornar os arquivos alteráveis ou alteráveis usando -eu bandeira.
[[email protegido] tecmint] # chattr -i demo / important_file.conf.
Depois de redefinir as permissões, verifique o status imutável dos arquivos usando 'lsattr‘Comando.
[[email protegido] tecmint] # lsattr. ./demo. ./important_file.conf.
Você vê nos resultados acima que o-eu'Sinalizador removido, isso significa que você pode remover com segurança todos os arquivos e pastas que residem na pasta tecmint.
[[email protegido] tecmint] # rm -rf * [[email protegido] tecmint] # ls -l. total 0.
Definir atributo imutável em arquivos /etc/passwd ou /etc/shadow, os torna seguros contra uma remoção acidental ou adulteração e também desabilita a criação de contas de usuário.
[[email protegido] tecmint] # chattr + i / etc / passwd. [[email protegido] tecmint] # chattr + i / etc / shadow.
Agora tente criar um novo usuário do sistema, você receberá uma mensagem de erro dizendo ‘Não é possível abrir / etc / passwd‘.
[[email protegido] tecmint] # useradd tecmint. useradd: não é possível abrir / etc / passwd.
Desta forma, você pode definir permissões imutáveis em seus arquivos importantes ou arquivos de configuração do sistema para evitar a exclusão.
Suponha que você só queira permitir que todos apenas acrescentem dados em um arquivo sem alterar ou modificar os dados já inseridos, você pode usar o botão ‘uma‘Atributo da seguinte forma.
[[email protegido] tecmint] # chattr + a example.txt [[email protegido] tecmint] # lsattr example.txt. um exemplo.txt.
Depois de definir o modo de acréscimo, o arquivo pode ser aberto para gravar dados apenas no modo de acréscimo. Você pode remover a definição do atributo append da seguinte maneira.
[[email protegido] tecmint] # chattr -a example.txt.
Agora tente substituir o conteúdo já existente em um arquivo example.txt, você obterá um erro dizendo 'operação não permitida‘.
[[email protegido] tecmint] # echo "substituir conter no arquivo." > exemplo.txt. -bash: example.txt: Operação não permitida.
Agora tente anexar novo conteúdo a um arquivo existente example.txt e verificá-lo.
[[email protegido] tecmint] # echo "substituir conter no arquivo." >> example.txt.
[[email protegido] tecmint] # cat example.txt. Aqui está o exemplo para testar 'a' apenas a média do atributo. substituir conter no arquivo.
Para proteger o diretório inteiro e seus arquivos, usamos ‘-R‘(Recursivamente) mude com‘+ i‘Sinalizar junto com o caminho completo da pasta.
[[email protegido] tecmint] # chattr -R + i minha pasta.
Depois de definir o atributo recursivamente, tente excluir a pasta e seus arquivos.
[[email protegido]tecmint] # rm -rf myfolder / rm: não é possível remover 'myfolder /': Operação não permitida.
Para cancelar a permissão, usamos a mesma opção ‘-R’ (recursivamente) com a sinalização ‘-i’ junto com o caminho completo da pasta.
[[email protegido] tecmint] # chattr -R -i minha pasta.
É isso! Para saber mais sobre os atributos, sinalizadores e opções do comando chattr, use as páginas de manual.