在 docker 中,“chattr:在文件上設定標誌時不允許操作”

在 docker 中,“chattr:在文件上設定標誌時不允許操作”

我已透過 ssh 連線到本機 Centos 7 docker 容器*,並且正在嘗試執行

sudo chattr +i file1

但我收到錯誤:

chattr: Operation not permitted while setting flags on file1

這裡發生了什麼事?它在談論什麼標誌?有解決方法嗎?

更改+i+a也會使命令失敗並出現該錯誤,但是當我將其更改為時,+d命令會成功。當我沒有 ssh 進入 docker 容器時,該命令也會成功。

*我在 Windows 10 之上的 Ubuntu VirtualBox VM 主機中執行 Centos 7 docker 容器(我希望盡可能避免與 Windows 打交道)。所有這一切的最終目標是使用這些容器測試一些 Ansible 腳本。

答案1

這與功能相關:chattrrequires CAP_LINUX_IMMUTABLE,預設情況下在 docker 中是禁用的。只需新增--cap-add LINUX_IMMUTABLE至 docker 容器啟動選項即可啟用它。

這是一個例子:

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

這裡您可以閱讀有關 docker 中的 Linux 功能的更多資訊。

相關內容