Im Docker: „chattr: Vorgang beim Setzen von Flags in der Datei nicht zulässig“

Im Docker: „chattr: Vorgang beim Setzen von Flags in der Datei nicht zulässig“

Ich bin per SSH in einen lokalen Centos 7 Docker Container* eingeloggt und versuche

sudo chattr +i file1

aber ich erhalte eine Fehlermeldung:

chattr: Operation not permitted while setting flags on file1

Was ist hier los? Von welchen Flaggen ist die Rede? Gibt es eine Problemumgehung?

+iWenn ich das in ändere, +aschlägt der Befehl ebenfalls mit diesem Fehler fehl, aber wenn ich es in ändere, +dist der Befehl erfolgreich. Der Befehl ist bei mir auch erfolgreich, wenn ich nicht per SSH in einen Docker-Container eingeloggt bin.

*Ich führe den Centos 7-Docker-Container in einem Ubuntu VirtualBox-VM-Host auf Windows 10 aus (ich möchte den Umgang mit Windows so weit wie möglich vermeiden). Das ultimative Ziel von all dem ist, einige Ansible-Skripte mit diesen Containern zu testen.

Antwort1

Dies hängt mit der Funktion „Fähigkeiten“ zusammen: „ chattrRequires CAP_LINUX_IMMUTABLE“ ist in Docker standardmäßig deaktiviert. --cap-add LINUX_IMMUTABLEUm es zu aktivieren, fügen Sie es einfach den Startoptionen des Docker-Containers hinzu.

Hier ist ein Beispiel:

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

HierSie können mehr über die Linux-Funktionen in Docker lesen.

verwandte Informationen