отношение между chmod и sudo на исполняемом файле

Как говорит @richard, это похоже на Windows. Общий файловый менеджер может сначала посмотреть на имя файла и попытаться распознать расширение файла, связанное с программой. Если это не удается, он может попытаться открыть файл и найти заголовок. Если вы попытаетесь прочитать нетекстовый файл (скажем, .jpeg), вы увидите строку данных, которая описывает файл. Например, это первая строка .jpeg, которая у меня лежала:

'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x00\x00\xff\xfe\x00;CREATOR: gd-jpeg v1.0 (с использованием IJG JPEG v80), качество = 90'.

1
29.07.2014, 06:39
2 ответа

Сначала терминология. chmod - это программа (и системный вызов), которая позволяет изменять биты разрешений файла в файловой системе. sudo - специальная программа, которая позволяет запускать другие программы с другими учетными данными (обычно с повышенными привилегиями, чаще всего с правами пользователя root). su похоже, но меньше (читать «нет»)настраиваемый, чем sudo - что наиболее важно, он требует аутентификации пользователей на основе знания пароля root (что довольно ужасно с точки зрения безопасности).

Исполняемый бит сообщает, может ли содержимое файла быть загружено в память и запущено (он ничего не говорит о том, имеет ли это смысл - вы можете установить исполняемый бит изображения в формате JPEG и наблюдать за его ошибкой, когда вы пытаетесь запустить его).

Теперь о вопросах:

  1. разрешения оцениваются после загрузки исполняемого файла. В случае su и sudo это происходит с эффективными идентификаторами (пользователь и группа - учетные данные, используемые при оценке привилегий - см. Учетные данные (7) man страница) целевого пользователя. Следовательно, если целевому пользователю разрешено выполнять файл, он выполняется.

  2. Как упомянуто выше: когда исполняемый бит установлен для эффективного UID или GID, он может быть выполнен. В противном случае нет.

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

  4. Нет. Обычно не имеет большого смысла запрещать пользователям запускать программы, требующие особых привилегий - программы должны обрабатывать их отсутствие (если возможно, аккуратно). Некоторые программы даже имеют только некоторые функции, которые не требуют специальных прав, но предлагают больше при запуске с особыми привилегиями - одним из примеров является route : непривилегированные пользователи могут использовать его для отображения таблиц маршрутизации ядра, а администраторы также могут изменять те.

2
27.01.2020, 23:28

Это может быть разделение волос, но: чтобы выполнить файл, у вас должно быть разрешение на выполнение файла и все каталоги, по которым вы переходите, чтобы перейти к файлу . Итак, если у Тома есть программа ( do_interesting_stuff ) в его домашнем каталоге ( / home / tom ), и каталог защищен 700 (нет доступа для кого-либо, кроме владельца) но файл защищен 755 (разрешение на чтение и выполнение для всех), вы по-прежнему не сможете запустить / home / tom / do_interesting_stuff «как вы» - вам нужно будет стать root (или «стать томом») с sudo или su , чтобы иметь возможность выполнить этот файл.

И конечно то же самое было бы правдой если вы хотите прочитать файл ( Интересный_стуфф.txt ) в домашнем каталоге Тома, в том смысле, что вам потребуется доступ для чтения к файлу и разрешение на выполнение в каталоге.

1
27.01.2020, 23:28

Теги

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