Docker
在 docker 中,“chattr:在文件上設置標誌時不允許操作”
我被 ssh’ed 到一個本地 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 腳本。
這與功能有關:預設情況下在 docker 中禁用了
chattr
requires 。CAP_LINUX_IMMUTABLE
只需添加--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 功能的更多資訊。