Как говорит @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'.
Сначала терминология. chmod
- это программа (и системный вызов), которая позволяет изменять биты разрешений файла в файловой системе. sudo
- специальная программа, которая позволяет запускать другие программы с другими учетными данными (обычно с повышенными привилегиями, чаще всего с правами пользователя root). su
похоже, но меньше (читать «нет»)настраиваемый, чем sudo
- что наиболее важно, он требует аутентификации пользователей на основе знания пароля root (что довольно ужасно с точки зрения безопасности).
Исполняемый бит сообщает, может ли содержимое файла быть загружено в память и запущено (он ничего не говорит о том, имеет ли это смысл - вы можете установить исполняемый бит изображения в формате JPEG и наблюдать за его ошибкой, когда вы пытаетесь запустить его).
Теперь о вопросах:
разрешения оцениваются после загрузки исполняемого файла. В случае su
и sudo
это происходит с эффективными идентификаторами (пользователь и группа - учетные данные, используемые при оценке привилегий - см. Учетные данные (7)
man страница) целевого пользователя. Следовательно, если целевому пользователю разрешено выполнять файл, он выполняется.
Как упомянуто выше: когда исполняемый бит установлен для эффективного UID или GID, он может быть выполнен. В противном случае нет.
Как правило, нет. Если вы хотите, вы можете пометить его как исполняемый только для определенных идентификаторов, а затем подготовить конфигурацию sudo
, чтобы она позволяла определенным пользователям запускать этот двоичный файл с учетными данными одного из тех, у кого есть права на выполнение в файле. .
Нет. Обычно не имеет большого смысла запрещать пользователям запускать программы, требующие особых привилегий - программы должны обрабатывать их отсутствие (если возможно, аккуратно). Некоторые программы даже имеют только некоторые функции, которые не требуют специальных прав, но предлагают больше при запуске с особыми привилегиями - одним из примеров является route
: непривилегированные пользователи могут использовать его для отображения таблиц маршрутизации ядра, а администраторы также могут изменять те.
Это может быть разделение волос, но: чтобы выполнить файл,
у вас должно быть разрешение на выполнение файла
и все каталоги, по которым вы переходите, чтобы перейти к файлу .
Итак, если у Тома есть программа ( do_interesting_stuff
) в его домашнем каталоге ( / home / tom
),
и каталог защищен 700 (нет доступа для кого-либо, кроме владельца)
но файл защищен 755 (разрешение на чтение и выполнение для всех),
вы по-прежнему не сможете запустить / home / tom / do_interesting_stuff
«как вы» -
вам нужно будет стать root (или «стать томом»)
с sudo
или su
, чтобы иметь возможность выполнить этот файл.
И конечно то же самое было бы правдой
если вы хотите прочитать файл ( Интересный_стуфф.txt
) в домашнем каталоге Тома,
в том смысле, что вам потребуется доступ для чтения к файлу
и разрешение на выполнение в каталоге.