Как файл Unix дает системе полномочия, отличаются от того из Windows?

Я подозреваю, что Ваш сценарий и Ваша оболочка отличаются. Возможно, Вы имеете #!/bin/sh наверху Вашего сценария как интерпретатор, но Вы используете bash как Ваша персональная оболочка. Можно узнать то, что окружает Вас выполненный в терминале путем выполнения echo $SHELL.

Более легкий способ сделать это, которое должно работать через большинство оболочек, должно было бы использовать перенаправление канала вместо оператора чтения файла, который Вы даете. Символ '-' является стандартной номенклатурой для чтения STDIN и может часто использоваться в качестве замены для имени файла в списке аргументов:

cat file2 | sort | diff file1 -

Или избегать бесполезного использования кошки:

sort < file2 | diff file1 -

8
13.04.2017, 15:37
2 ответа

NTFS имеет Windows ACEs. Unix использует "биты режима" на каждом файле.

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

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

Файлы в Unix имеют пользователя владения (владелец) и группа владения (группа владельца). Существует три фиксированных "принципала", которые являются владельцем, членами группы владения и всех остальных (иначе мир). Для каждого принципала существует три "бита", которые покрывают чтение, пишут и выполняют способности. (они имеют различные значения для каталогов, чем файлы, видят это). Эти биты определяют, кто может выполнить что операции. Это называют режимом файла и встраивают в файл (нет никаких отдельных ТУЗОВ).

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

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

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

14
27.01.2020, 20:09
  • 1
    Это - setgid разрешение для каталогов, и оно заставляет файлы наследовать группу владельца, не полномочия. –  Random832 21.05.2011, 23:40
  • 2
    @George: Одна вещь, которую необходимо помнить, состоит в том, что группа НЕ является группой владельца, это является отдельным. См. chgrp (1). –  Hello71 21.05.2011, 23:44
  • 3
    @Random832: Спасибо за разъяснение. –  LawrenceC 22.05.2011, 01:22
  • 4
    Большинство дистрибутивов в наше время включает поддержку расширенных Списков управления доступом (ACLs), скомпилированный в различные доступные файловые системы по умолчанию. Название пакета программного обеспечения должно было получить доступ и изменить, их обычно называют acl или facl или что-то подобное, с этими двумя названными программами setfacl и getfacl изменить или получить настройки списка управления доступом. –  Shadur 22.05.2011, 12:48

Одна вещь это очень отличается, состоит в том, что "исполняемый файл" является разрешением в соответствии с Linux/Unix, не на основе имени или расширения файла.

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

5
27.01.2020, 20:09
  • 1
    Windows на самом деле имеет исполняемое разрешение, хотя они побеждают цель путем установки его по умолчанию. –  Patches 22.05.2011, 08:27
  • 2
    не имеют значения на окнах также. –  Logan Capaldo 22.05.2011, 16:13
  • 3
    @Logan: На самом деле у них действительно есть значение в Windows. Расширение файла определяет, какая программа (программы) может использоваться для открытия его, а также указание к проводнику, какой файл это - так, чтобы миниатюры могли быть сгенерированы. В последнем случае, который мог потенциально использовать ошибку, которая существует в генераторе миниатюры и поэтому могла поставить под угрозу систему. –  Nathan Osman 14.06.2011, 22:46
  • 4
    @George то же относится к менеджеру по графическому файлу с ошибочной программой предварительного просмотра ногтя большого пальца руки в любой операционной системе. Моя точка была то, что CreateProcess не дает два крика, если Ваши концы программы в .exe (и это легко видеть путем запущения программы из cmd.exe), но она действительно заботится о выполнить бите. –  Logan Capaldo 14.06.2011, 23:34
  • 5
    @George, прямо точно так же, как Unix (если Вы не хотите начать спорить о том, "совершенствуется" ли поиск хижины или не). Я просто хотел прояснить, что расширение файла не имеет никакого отношения к модели обеспечения безопасности. При маркировке исполняемого неисполняемого файла в Windows, он имеет тот же эффект, который он делает на Unix. –  Logan Capaldo 15.06.2011, 00:51

Теги

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