Как полномочия/атрибуты файла работают? Уровень ядра, уровень FS или оба?

Один простой подход xdotool, как

xdotool type 'text'

8
20.06.2013, 02:18
4 ответа

И ядро и файловая система играют роль. Полномочия хранятся в файловой системе, таким образом, должно быть место, чтобы хранить информацию в формате файловой системы. Полномочия осуществляются и передаются к приложениям ядром, таким образом, ядро должно реализовать правила определить то, что информация сохранила в средствах файловой системы.

“Полномочия файла Unix” относятся к традиционной системе разрешения, которая включает три действия (чтение, запишите, выполнитесь), управляемый через три ролевых типа (пользователь, группа, другой). Задание файловой системы состоит в том, чтобы сохранить 3×3=9 биты информации. Задание ядра состоит в том, чтобы интерпретировать эти биты как полномочия; в частности, когда процесс делает попытку операции на файле, ядро должно определить, учитывая пользователя и группы, которые процесс выполняет как, биты полномочий файла и требуемая операция, позволить ли операцию. (“Полномочия файла Unix” также обычно включают setuid и setgid биты, которые не являются строго говоря полномочиями.)

Современные системы Unix могут поддерживать другие формы полномочий. Большинство современных систем Unix (Солярис, Linux, *BSD) списки управления доступом к поддержке, которые позволяют присваивать read/write/excecute полномочия больше чем для одного пользователя и больше чем одной группы для каждого файла. Файловая система должна иметь пространство, чтобы хранить эту дополнительную информацию, и ядро должно включать код, чтобы искать и использовать эту информацию. Ext2, reiserfs, btrfs, zfs, и большинство других современных форматов файловой системы Unix определяют место для хранения такого ACLs. Mac OS X поддерживает другой набор ACL, которые включают нетрадиционные полномочия такой “добавлять”, и “создают подкаталог”; HFS + формат файловой системы поддерживает их. При монтировании HFS + объем на Linux эти ACLs не будут осуществлены, так как ядро Linux не поддерживает их.

С другой стороны существуют операционные системы и файловые системы, которые не поддерживают управление доступом. Например, FAT и варианты были разработаны для однопользовательских операционных систем и съемных носителей, и его полномочия ограничены read/read-write и скрытые/видимые. Это полномочия, осуществленные DOS. При монтировании ext2 файловой системы на DOS это не осуществит ext2 полномочия. С другой стороны при доступе к файловой системе FAT на Linux все файлы будут иметь те же полномочия.

Последовательные версии Windows добавили поддержку большего количества типов полномочий. Файловая система NTFS была расширена для хранения тех дополнительных полномочий. При доступе к файловой системе с более новыми полномочиями в более старой операционной системе ОС не будет знать об этих более новых полномочиях и так не осуществит их. С другой стороны при доступе к более старой файловой системе с более новой операционной системой она не будет иметь, содержат новых полномочий, и это до ОС для обеспечения разумных нейтрализаций.

7
27.01.2020, 20:10
  • 1
    "Задание ядра должен интерпретировать эти биты как полномочия; в частности, когда процесс делает попытку операции на файле, ядро должно определить [...]", Разве это не означает, что ядро могло в теории быть измененным, чтобы проигнорировать все это и считать данные так или иначе? (Своего рода прямой доступ к диску), Или там что-то еще предотвращающее это? –  Overmind 13.04.2017, 15:05
  • 2
    @Overmind, Конечно. Код ядра имеет доступ ко всему. Диск ничего не знает о процессах, пользователях или полномочиях. Ядро говорит, что диск “дает мне блок 232876” и дисковые ответы с содержанием блока. Определение, к которому могут получить доступ процессы, какие блоки (или который части блоков) являются заданием ядра. –  Gilles 'SO- stop being evil' 13.04.2017, 16:04

Чтобы к пользовательским определенным правам и ядро и файловая система должны поддерживать их. Если файловая система даже не поддерживает самые основные права доступа затем, код файловой системы должен фальсифицировать их (например, с опцией монтирования umask для vfat).

4
27.01.2020, 20:10

Мое понимание - то, что ядро реализует inodes в VFS. inodes, содержат данные полномочий (UNIX и ACL) наряду с другими метаданными, и файловая система может расширить inode для добавления опций. Если Вам интересно, считайте на Linux VFS - окровавленный материал, если Вы не системный программист.

3
27.01.2020, 20:10

Как общее правило, разрешение файлов и атрибуты файлов хранятся в файловую систему [точный путь зависит от рассматриваемой файловой системы (ext3/4, переходная плата, NTFS и т.д....)], но используется ядром, обычно для осуществления чего-то.

Например, ядро в *отклоняет как sistema, "вещь", которые знают значение UID, связанного с файлом / каталог. UID файла является просто числом, сохраненным вместе с определенным файлом файловой системой, но "перевод" такого числа определенному пользователю (и соответствующие права сделать что-то или не) сделан ядром.

1
27.01.2020, 20:10

Теги

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