В докере «chattr: Операция не разрешена при установке флагов в файле»

В докере «chattr: Операция не разрешена при установке флагов в файле»

Я подключился по ssh к локальному контейнеру Centos 7 Docker* и пытаюсь запустить

sudo chattr +i file1

но я получаю сообщение об ошибке:

chattr: Operation not permitted while setting flags on file1

Что здесь происходит? О каких флагах идет речь? Есть ли обходной путь?

Изменение +iна +aтакже приводит к тому, что команда завершается с ошибкой, но когда я меняю на +dкоманда завершается успешно. Команда также завершается успешно для меня, когда я не подключен по ssh к контейнеру docker.

*Я запускаю контейнер Centos 7 docker на хосте Ubuntu VirtualBox VM поверх Windows 10 (я хотел бы максимально избегать работы с Windows). Конечной целью всего этого является тестирование некоторых скриптов Ansible с использованием этих контейнеров.

решение1

Это связано с capabilities thing: chattrrequire CAP_LINUX_IMMUTABLE, который отключен в docker по умолчанию. Просто добавьте --cap-add LINUX_IMMUTABLEв docker container start options, чтобы включить его.

Вот пример:

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

ЗдесьПодробнее о возможностях Linux можно прочитать в Docker.

Связанный контент