-1

Мне было интересно, почему разрешение на выполнение установлено так, как в Linux. Разрешения на выполнение являются флагами разрешений, но они также (для обычных файлов) изменяют способ просмотра файла ОС.

Поэтому мне было интересно, какова цель того, чтобы даже иметь понятие «исполняемые и неисполняемые» обычные файлы? Другими словами, что, если вы сделали все обычные файлы видимыми ОС как исполняемые команды, и просто сделали разрешения на выполнение вести себя как разрешения?

Казалось бы, единственная разница между этим и тем, как обстоят дела сейчас, заключается в том, что суперпользователь сможет выполнить любой файл без необходимости сначала изменять разрешения. Это причина?

Или, если перефразировать вопрос: является ли неспособность суперпользователя выполнить неисполняемый файл без предварительного изменения разрешений преднамеренным дизайном (аналогично тому, как атрибуты монтирования и чтения только для чтения предназначены для предотвращения суперпользователя от редактирование без предварительного изменения их)?

Или это просто непреднамеренный побочный эффект от того, как была построена система?

Казалось бы, по соображениям безопасности имеет смысл предотвратить случайное выполнение root.

2 ответа2

0

Является ли неспособность суперпользователя выполнить неисполняемый файл без предварительного изменения разрешений преднамеренным дизайном (аналогично тому, как монтируются только для чтения атрибуты и атрибуты immutable/append-only, чтобы запретить редактированию суперпользователя без предварительного его изменения)?

Это намеренный дизайн. Но не для того, чтобы помешать пользователю root, вместо этого нужно спасти пользователя root от чего-либо: от выполнения файлов, которые не предназначены для выполнения. В UNIX вы можете выполнить что угодно, если права доступа установлены. Если файл в исполняемом двоичном формате, известном системе, он исполняется как двоичный файл, если файл содержит шебанг (#!) строка в качестве первой строки, она выполняется как скрипт программой, перечисленной в этой строке, если ни один из них не применяется, она выполняется как сценарий с помощью /bin/sh . Если файл не предназначался для выполнения, то /bin/sh будет много жаловаться на этот мусор, найденный в файле ... Теперь есть разрешения, чтобы спасти пользователя root от этого.

0

Другими словами, что, если вы сделали все обычные файлы видимыми ОС как исполняемые команды, и просто сделали разрешения на выполнение вести себя как разрешения?

Ну, я не думаю, что ОС рассматривает файл как исполняемый файл или нет. Это больше похоже на то, что файл имеет разрешение на выполнение или нет. Теперь о том, почему пользователь root на самом деле зависит от разрешения присутствовать где-то для выполнения (если это пользователь root, он должен иметь все разрешения), может быть что-то, связанное с оболочкой. Также может быть так, что не обязательно, чтобы все файлы рассматривались как исполняемые файлы. Я полагаю, что вы все равно будете делать системные вызовы (когда не должны), даже если они ничего не делают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .