Como uma força de hábito, depois de perder várias centenas de TB de dados no passado durante uma paralisação da NAS, eu sempre defini pontos de montagem em servidores como imutáveis. Isso evita qualquer alteração na estrutura do disco sob o ponto de montagem. Isso evita um cenário em que um disco montado nesse ponto de montagem se desconecta e o kernel começa a gravar esses arquivos no ponto de montagem. Torná-lo imutável impede que o volume da raiz seja preenchido e faz com que os sinos de segurança comecem a gritar, o que nos ajuda a perceber o problema mais rapidamente.
Isso funciona bem normalmente. Se eu criar / mnt / mountpoint e torná-lo imutável, não posso criar arquivos lá como root. Se eu montar um volume em / mnt / mountpoint, posso criar arquivos de teste sem problemas.
[root@test-vm-1 ~]# mkdir /mnt/test
[root@test-vm-1 ~]# touch /mnt/test/testfile
[root@test-vm-1 ~]# ls /mnt/test/testfile
/mnt/test/testfile
[root@test-vm-1 ~]# rm -f /mnt/test/testfile
[root@test-vm-1 ~]# chattr +i /mnt/test/
[root@test-vm-1 ~]# touch /mnt/test/testfile
touch: cannot touch '/mnt/test/testfile': Permission denied
[root@bcv-ub-test-vm-1 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
TEXT OMMITTED
[root@test-vm-1 ~]# mount /dev/sdb1 /mnt/test/
[root@test-vm-1 ~]# touch /mnt/test/testfile
[root@test-vm-1 ~]# umount /mnt/test
[root@test-vm-1 ~]# umount /mnt/test/testfile
umount: /mnt/test/testfile: not found
[root@test-vm-1 ~]# touch /mnt/test/testfile
touch: cannot touch '/mnt/test/testfile': Permission denied
Portanto, o comportamento é que você não pode gravar no ponto de montagem a menos que um volume seja montado lá.
No entanto, eu uso um playbook para executar o seguinte em ansible:
- name: Validate that VIVALogger volume group is created and added
stat:
path: /dev/sdb1
register: stat_result
- name: Configure export volume - add mountpoint
file:
path: /mnt/test
state: directory
- name: Make test mountpoint immutable
command: "chattr +i /mnt/test"
- name: Configure export volume - mount export volume
mount:
path: /mnt/test
src: /dev/sdb1
fstype: xfs
state: mounted
opts: inode64,nobarrier
dump: 0
passno: 2
when: stat_result.stat.exists
- name: Pause for 30 seconds for volume to mount properly
pause:
seconds: 30
- name: Create testfile
command: "touch /mnt/test/testfile"
Nenhum arquivo pode ser gravado no volume montado. Parece que a imutabilidade está sendo aplicada recursivamente a todos os subdiretórios do volume.
Eu também tentei configurar a imutabilidade usando o módulo de arquivo, e o comportamento é o mesmo.
Alguém já viu esse comportamento antes? Estou usando o ansible 2.6.3 contra o RHEL 5, 6 e 7.
Tags ansible