Я, должно быть, не понял вопроса, потому что вы можете использовать простое старое перенаправление, как в первый раз
docker exec my_container
, либо использовать cat
(опять же с перенаправлением).
Для root
нормально иметь возможность переопределять разрешения таким образом.
Другой пример - root
может читать файл без доступа для чтения:
$ echo hello > tst
$ chmod 0 tst
$ ls -l tst
---------- 1 sweh sweh 6 Aug 16 15:46 tst
$ cat tst
cat: tst: Permission denied
$ sudo cat tst
hello
Некоторые системы имеют концепцию неизменяемых файлов. например, во FreeBSD:
# ls -l tst
-rw-r--r-- 1 sweh sweh 6 Aug 16 15:50 tst
# chflags simmutable tst
# echo there >> tst
tst: Operation not permitted.
Теперь даже root
не может писать в файл. Но, конечно, root
может удалить флаг:
# chflags nosimmutable tst
# echo there >> tst
# cat tst
hello
there
С FreeBSD вы можете пойти дальше и установить флаг ядра, чтобы предотвратить удаление root
флаг:
# chflags simmutable tst
# sysctl kern.securelevel=1
kern.securelevel: -1 -> 1
# chflags nosimmutable tst
chflags: tst: Operation not permitted
Теперь никто, даже root
, не может изменить этот файл.
(Системе требуется перезагрузка, чтобы снизить уровень безопасности).
Да, это нормально. root не имеет ограничений на чтение / запись (за очень небольшим исключением), потому что он является root.