Может ли суперпользователь писать в файлы, доступные только для чтения?

Я, должно быть, не понял вопроса, потому что вы можете использовать простое старое перенаправление, как в первый раз

docker exec my_container file

, либо использовать cat (опять же с перенаправлением).

11
23.09.2016, 15:50
2 ответа

Для 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 , не может изменить этот файл.

(Системе требуется перезагрузка, чтобы снизить уровень безопасности).

14
27.01.2020, 19:58

Да, это нормально. root не имеет ограничений на чтение / запись (за очень небольшим исключением), потому что он является root.

3
27.01.2020, 19:58

Теги

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