Ответ Дмитрия Григорьева выше правильный. В качестве мнемоники, вот почему мы обычно видим разрешения, которые "шире слева": u ≥ g ≥ o. Обычные режимы - 755, 644 и 600. Необычно, скажем, запретить владельцу, но разрешить группе. Я уверен, что никогда не видел ваш 061 в реальном использовании.
Во время загрузки системы Unix ядро делает несколько вещей, которые не выполняются при нормальной работе. Одна из этих вещей - смонтировать файловую систему в каталоге /
; это сильно отличается от обычных операций монтирования, поскольку монтирование не запускается системным вызовом mount
, а целевой каталог не является существующим каталогом. Другое дело выполнить программу как PID 1 , что отличается от нормальной работы, поскольку это создает процесс без дублирования существующего процесса .
Способ этого «волшебного» монтирования корневого каталога сильно различается в разных вариантах Unix. Ядро выбирает, какое устройство монтировать, на основе параметров конфигурации, которые могут быть указаны различными способами: конфигурация времени компиляции, конфигурация времени выполнения в образе ядра, конфигурация времени выполнения в некотором предопределенном месте памяти, параметры командной строки, ... Чтобы узнать, как это работает на вашем компьютере, вам нужно будет посмотреть документацию вашего варианта Unix и узнать, как настроена ваша машина.
Чтобы дать представление о том, как это работает, вот обзор того, как работает современное ядро Linux. Это не самый простой пример, потому что Linux имеет богатую историю и различные варианты использования.
/
, которая состоит из файлов, хранящихся в ОЗУ. Эта специальная файловая система называется initramfs ; это экземпляр типа файловой системы rootfs.Initramfs заполняется контентом, который либо передается загрузчиком через архитектурно-зависимый протокол, либо скомпилирован непосредственно в образ ядра, который загружается в память загрузчиком. /
, которое является частью ограниченного (но большого) набора типов томов, которые распознаются кодом инициализации в ядре. К таким типам устройств относятся любые файловые системы на общих типах разделов на обычных типах дисков (что-либо, отдаленно напоминающее SCSI, включая ATA, USB и т. Д.), А также RAM-диски и монтирования NFS. Это из руководства bootup (7)
на машине Ubuntu:
В загрузке системы задействовано несколько различных компонентов. Сразу после включения системная BIOS выполнит минимальную инициализацию оборудования и передаст управление загрузчику, хранящемуся на постоянном запоминающем устройстве. Затем этот загрузчик вызовет ядро ОС с диска (или из сети). В случае Linux это ядро (необязательно) извлекает и выполняет начальный образ RAM-диска (
initrd
), например, созданныйdracut (8)
, который выглядит для корневой файловой системы (возможно, используя для этогоsystemd (1)
).После того, как корневая файловая система найдена и смонтирована,initrd
передает управление системному администратору хоста (например,systemd (1)
), хранящемуся в образе ОС. , который затем отвечает за проверку всего оставшегося оборудования, монтирование всех необходимых файловых систем и создание всех настроенных служб.
Вы могли бы найти это, прочитав man boot
, не найдя ответа, но увидев «См. Также: bootup (7)
» внизу руководства.
Из любопытства я посмотрел руководство для initrd
:
На первом этапе загрузки ядро запускается и монтирует начальную корневую файловую систему из содержимого
/ dev / initrd
(например, RAM-диск, инициализированный загрузчиком ). На втором этапе дополнительные драйверы или другие модули загружаются из содержимого исходного корневого устройства. После загрузки дополнительных модулей новая корневая файловая система (т. Е. Обычная корневая файловая система) монтируется с другого устройства.
Вы упомянули «Unix», поэтому я укажу вам документацию для начальной начальной загрузки системы OpenBSD и начальной загрузки второй ступени .