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

Вы видите правильное поведение. Первый процесс принадлежит pandas5 , выполняя часть sudo su - oracle . Второй процесс - это тот, который выполняет настоящую команду dba_audit_cleanup.sh от имени пользователя oracle. Проблема заключается в проверке запущенных процессов внутри самого скрипта - в том виде, в котором вы его написали, он всегда будет обрабатывать оба процесса, и поэтому всегда будет терпеть неудачу. Лучше всего записать файл PID или какую-либо другую форму файла флага в начале сценария, проверить его во время сценария и каким-то образом убедиться, что процесс, выполняющий проверку, является тем, который должен быть запущен, а затем удалить его. в конце сценария. Или проверьте файл pid, выйдите, если он найден, если он не найден, создайте его, а затем удалите в конце скрипта.

0
03.06.2019, 17:50
1 ответ

Это связано с возможностью:chattrтребует CAP_LINUX_IMMUTABLE, которая по умолчанию отключена в докере. Просто добавьте --cap-add LINUX_IMMUTABLEв параметры запуска контейнера докеров, чтобы включить его.

Вот пример:

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 в докере.

11
28.01.2020, 02:22

Теги

Похожие вопросы