Чем система привилегий файлов Unix отличается от системы Windows?

9

Смежный вопрос: Чем файловая система / организация Linux отличается от Windows?

Я немного знаком с тем, как работают привилегии , когда дело доходит до файлов и каталогов - каждая запись имеет ownerи groupсвойство , которое представляет владельца файла и группы , что владелец принадлежит (поправьте меня , если я ошибаюсь).

Чем это отличается от организации разрешений в файловой системе NTFS в Windows? Какие преимущества имеет система разрешений Unix над NTFS?

Натан Осман
источник

Ответы:

16

NTFS имеет Windows ACE. Unix использует «биты режима» для каждого файла.

В NTFS у каждого файла может быть владелец и ноль или более записей контроля доступа Windows (ACE). ACE состоит из принципала (пользователи и группы являются принципалами), набора операций (чтение, запись, выполнение и т. Д.) И того, разрешены или запрещены эти операции. Файлы могут иметь много ACE. Другие объекты в Windows, кроме файлов, также могут иметь записи ACE, такие как записи реестра, объекты принтера и другие вещи. Все ACE учитываются, когда происходит файловая операция. Отрицание имеет приоритет над разрешением.

Windows ACE поддерживают наследование, где вы можете установить ACE для каталога и автоматически распространять его на каталоги более низкого уровня.

Файлы в Unix имеют владельца-пользователя (владельца) и группу-владельца (owner-group). Есть три фиксированных «принципала», которыми являются владелец, члены группы-владельца и все остальные (иначе мир). Для каждого принципала есть три «бита», которые охватывают возможности чтения, записи и выполнения. (они имеют разные значения для каталогов, чем файлы, смотрите это ). Эти биты определяют, кто может выполнять какие операции. Это называется режимом файла и встроено в файл (отдельных ACE нет).

Большую часть времени вы беспокоитесь о разрешениях «world», то есть установка всех трех битов на «world» означает, что никто, кто не является владельцем или владельцем группы, ничего не может сделать с файлом. Разрешения Unix работают только в файловой системе, но поскольку большинство объектов отображаются в виде файлов, вы можете использовать разрешения, чтобы ограничить доступ к дискам, принтерам и т. Д. Разрешения Unix проще, но более «грубые». Разрешения Unix не поддерживают наследование и не влияют на каталоги более низкого уровня, за исключением разрешения на выполнение для каталогов (я думаю), которое заставляет вновь созданные файлы принимать разрешения для каталога (но не влияет на созданные в настоящее время файлы).

Традиционно файлы Unix имеют одного владельца и одну группу владельцев. Существуют расширения для Linux, которые добавляют ACE к файлам аналогично Windows.

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

LawrenceC
источник
4
Это разрешение setgid для каталогов, и оно заставляет файлы наследовать группу владельцев, а не разрешения.
Random832
3
@ Джордж: Одна вещь, которую вы должны помнить, это то, что группа НЕ является группой владельца, это отдельная группа. Смотрите chgrp (1).
Hello71
@ Random832: Спасибо за разъяснения.
LawrenceC
3
Большинство дистрибутивов в настоящее время включают поддержку расширенных списков контроля доступа (ACL), скомпилированных в различные доступные файловые системы по умолчанию. Имя программного пакета, необходимого для доступа к ним и их изменения, обычно называется aclили faclчто-то похожее, с именами двух программ setfaclи getfaclдля изменения или получения настроек списка управления доступом.
Шадур
7

Одна вещь, которая отличается от других, заключается в том, что «исполняемый файл» - это разрешение в Linux / Unix, не основанное на имени или расширении файла.

Это преимущество перед Windows в том, что в Linux вы можете гарантировать, что что-то не будет выполнено, удалив исполняемые разрешения. Никакие магические расширения не имеют значения вообще. Вероятно, это одна из причин, почему традиционные файловые вирусы нигде не получили успеха в Unix и Linux.

Брюс Эдигер
источник
2
У Windows на самом деле есть разрешение на выполнение, хотя они побеждают цель, устанавливая ее по умолчанию.
Патчи
1
Расширения не имеют значения и для окон.
Логан Капальдо
1
@Logan: На самом деле они имеют значение для Windows. Расширение файла определяет, какие программы могут быть использованы для его открытия, а также указывает исследователю, какой это тип файла, чтобы можно было создавать миниатюры. В последнем случае это может потенциально использовать ошибку, которая существует в генераторе миниатюр и, следовательно, может поставить под угрозу систему.
Натан Осман
1
@George То же самое относится к графическому файловому менеджеру с глючным средством предварительного просмотра большого пальца в любой операционной системе. Моя точка зрения заключалась в том, что CreateProcess не дает два гудка, если ваша программа заканчивается на .exe (и это легко увидеть, запустив программу из cmd.exe), но он действительно заботится о бите выполнения.
Логан Капальдо
2
@ Джордж, прямо как в Unix (если только вы не хотите начать спорить о том, является ли поиск шебанга «продвинутым» или нет). Я просто хотел прояснить, что расширение файла не имеет ничего общего с моделью безопасности. Если вы пометите исполняемый файл как неисполняемый в Windows, он будет иметь тот же эффект, что и в Unix.
Логан Капальдо