No docker, “chattr: Operação não permitida ao definir sinalizadores no arquivo”

No docker, “chattr: Operação não permitida ao definir sinalizadores no arquivo”

Estou conectado a um contêiner docker local do Centos 7 * e estou tentando executar

sudo chattr +i file1

mas estou recebendo um erro:

chattr: Operation not permitted while setting flags on file1

O que está acontecendo aqui? De que bandeiras está falando? Existe uma solução alternativa?

Alterar +ipara +atambém faz com que o comando falhe com esse erro, mas quando eu altero para +do comando é bem-sucedido. O comando também funciona para mim quando não estou usando ssh em um contêiner docker.

*Estou executando o contêiner docker Centos 7 em um host Ubuntu VirtualBox VM no Windows 10 (gostaria de evitar ter que lidar com o Windows tanto quanto possível). O objetivo final de tudo isso é testar alguns scripts Ansible usando esses contêineres.

Responder1

Isso está relacionado aos recursos: chattrrequire CAP_LINUX_IMMUTABLEque está desabilitado no docker por padrão. Basta adicionar --cap-add LINUX_IMMUTABLEàs opções de início do contêiner do docker para habilitá-lo.

Aqui está um exemplo:

user@test:~$ docker run --cap-add LINUX_IMMUTABLE -it bash
bash-5.0# cd home
bash-5.0# touch test
bash-5.0# apk add e2fsprogs-extra
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libuuid (2.33-r0)
(2/6) Installing libblkid (2.33-r0)
(3/6) Installing libcom_err (1.44.5-r0)
(4/6) Installing e2fsprogs-libs (1.44.5-r0)
(5/6) Installing e2fsprogs (1.44.5-r0)
(6/6) Installing e2fsprogs-extra (1.44.5-r0)
Executing busybox-1.29.3-r10.trigger
OK: 15 MiB in 24 packages
bash-5.0# chattr +i test
bash-5.0# echo $?
0

Aquivocê pode ler mais sobre os recursos do Linux no docker.

informação relacionada