Я запутался в том, какое влияние uid или gid оказывает на способность процесса выполнять файл. Я прочитал раздел, который я мог найти на них в APUE, но я, должно быть, пропустил ту часть, где Стивенс объясняет это. Я знаю, что суперпользователь имеет идентификатор 0 и может выполнять любой файл, но я заблудился, что происходит с конкретными номерами uid или gid. Я также не совсем уверен, имеют ли значение uid или gid, или euid и egid - единственные вещи, которые имеют значение?

Например, это вопрос, который мы получили в классе:

Предположим, что процесс с эффективным идентификатором пользователя 4 и эффективным идентификатором группы 7 пытается выполнить файл с идентификатором пользователя 4, идентификатором группы 9 и разрешениями rw-rx - x. Что будет (и почему)?

Таким образом, я полагаю, поскольку пользователь не имеет права на запись, процесс не сможет выполнить файл? Или, поскольку uid и euid одинаковы, процесс может выполнить файл? Откуда берется egid и gid?

1 ответ1

0

Я думаю, что я понял это, поэтому, если euid совпадает с uid и пользователю предоставлены разрешения на выполнение, тогда файл будет выполнен. Аналогично, если egid и gid совпадают и бит выполнения gid установлен или установлен другой бит выполнения (другого идентификатора для проверки нет, поэтому достаточно другого бита выполнения), выполнение будет выполнено. Если ни один из них не является правдой, то в разрешении будет отказано.

Таким образом, в приведенном выше примере euid соответствует uid, но бит выполнения пользователя не установлен. Бит выполнения группы установлен, но egid не соответствует gid. Но установлен другой бит выполнения, поэтому файл будет успешно выполнен.

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