Разница между запуском процесса с правами root и запущенным процессом со всеми возможностями Linux

Файловая система в любой операционной системе - это просто структура данных, находящаяся на диске (или другом носителе, который можно считать разделенным на «блоки» фиксированного размера). То есть, способ записи в таких блоках названия файлов, возможно, некоторых других данных, таких как владелец и разрешения, и где их содержимое находится на диске.

В файловых системах Unix / Linux файл представлен блоком, содержащим информацию о размере, владельце, группе, разрешениях и (по сути) список блоков, содержащих фактические данные. Традиционные файловые системы содержат фиксированное количество таких индексных дескрипторов, для которых зарезервирована часть диска. Они просто нумеруются от 0 и выше. Каталог в файловой системе реализован как файл, содержащий список пар (имя файла, номер inode).

С помощью этой структуры вы можете иметь один и тот же файл, который будет появляться несколько раз под разными именами (индексный дескриптор записывает количество ссылок). «Удаление файла» означает просто пометку записи в каталоге как неиспользуемую каким-то образом и уменьшение количества ссылок в индексном дескрипторе. Если счетчик ссылок становится равным нулю, пространство, используемое файлом (индексный дескриптор, блоки, используемые для данных, и указатели на блоки данных), может быть освобождено.«Переименование файла» изменяет запись в каталоге, «перемещение файла» - это просто удаление одной записи каталога и создание другой.

Создание «жесткой ссылки» ( в старом новом ) на файл означает просто записать тот же номер inode, что и старый в новый . Обратите внимание, что после этой операции обе записи каталога в точности эквивалентны . Также обратите внимание, что это будет работать только в той же файловой системе, то есть на одном диске. Чтобы преодолеть это ограничение, были изобретены символические ссылки . Символьная ссылка - это, по сути, крошечный файл, который содержит имя объекта, с которым связана. Это создается ln -s old new . Обратите внимание, что старый может быть удален, оставив новый как устаревшую ссылку.

Вышесказанное немного упрощено, некоторые современные файловые системы имеют другую структуру; но они должны вести себя так, как если бы они были структурированы, как описано, потому что способ работы файлов и каталогов слишком укоренился в Unix, чтобы его можно было изменить (сильно).

0
04.02.2019, 13:40
1 ответ

Я думаю, вы упускаете из виду то, что происходит.

Привилегированный не root . По умолчанию контейнер работает от имени root, но с небольшими возможностями и непривилегированным -.

Отвечаю на ваш вопрос (в заголовке ):Очень мало, только имя пользователя, поэтому файлы будут создаваться от имени пользователя. Однако у пользователя будут права на изменение имени пользователя. (за исключением некоторого программного обеспечения с ошибками, которое un -обязательно проверяет наличие root ).

Вы должны проверить руководство, что означает привилегия (Я не знаю, я знаю, что это не то же самое, что root, это не то же самое, что возможности ).

By default, Docker containers are “unprivileged” and cannot, for example, run a Docker daemon inside a Docker container. This is because by default a container is not allowed to access any devices, but a “privileged” container is given access to all devices (see the documentation on cgroups devices).

When the operator executes docker run --privileged, Docker will enable access to all devices on the host as well as set some configuration in AppArmor or SELinux to allow the container nearly all the same access to the host as processes running outside containers on the host. Additional information about running with --privileged is available on the Docker Blog.

If you want to limit access to a specific device or devices you can use the --device flag. It allows you to specify one or more devices that will be accessible within the container.

Вы также можете отображать отдельные файлы/каталоги с хоста с помощью -v.

0
28.01.2020, 04:02

Теги

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