Estoy conectado a un contenedor acoplable local de Centos 7* y estoy intentando ejecutar
sudo chattr +i file1
pero me sale un error:
chattr: Operation not permitted while setting flags on file1
¿Que está pasando aqui? ¿De qué banderas habla? ¿Existe alguna solución?
Cambiar +i
a +a
también hace que el comando falle con ese error, pero cuando lo cambio a, +d
el comando tiene éxito. El comando también funciona correctamente cuando no estoy conectado a un contenedor acoplable.
*Estoy ejecutando el contenedor acoplable Centos 7 en un host Ubuntu VirtualBox VM sobre Windows 10 (me gustaría evitar tener que lidiar con Windows tanto como sea posible). El objetivo final de todo esto es probar algunos scripts de Ansible utilizando estos contenedores.
Respuesta1
Esto está relacionado con las capacidades: chattr
requiere CAP_LINUX_IMMUTABLE
que está deshabilitado en la ventana acoplable de forma predeterminada. Simplemente agregue --cap-add LINUX_IMMUTABLE
las opciones de inicio del contenedor acoplable para habilitarlo.
He aquí un ejemplo:
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
AquíPuede leer más sobre las capacidades de Linux en Docker.