2

Если у меня есть сценарий, который должен выполняться пользователем nobody , зачем нужно назначать групповые разрешения на чтение и выполнение. Например, в статье по адресу http://www.zzee.com/solutions/unix-permissions.shtml отмечается, что разрешение 755 должно быть назначено сценариям на веб-сервере. Я понимаю, что к пользователю nobody относится как к others и как владелец скрипта я хотел бы получить полные права. Я что-то пропустил?

1 ответ1

2

С разрешениями Linux others означают "все остальные". Допустим, у вас есть файл с такими правами доступа:

-rwxr-x--x 1 peanut users 256 Jan 1 myscript

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

Далее у нас есть r-x которые являются разрешениями group , и рассматриваемая группа находится в четвертом столбце: users . Любой, кто является членом этой группы, имеет право читать и выполнять этот файл. Вы можете увидеть членство в группе, выполнив:

$ grep users /etc/group
users:x:100:tom,dick,harry

Это показывает идентификатор группы 100 и всех, кто не является основным членом группы. Первичных членов можно найти, выполнив поиск в файле passwd для членов - любой, у кого есть 100 в четвертом столбце, является основным членом:

 peanut:x:1000:100:peanut,,,:/home/peanut:/bin/bash

Последними разрешениями являются --x которые являются разрешениями others , или "все остальные", т. Е. Все , кто не является ни пользователем, ни членом группы. Это будет включать в себя пользователя nobody если он существует, но и любой другой пользователь. Таким образом, всем остальным разрешено выполнять этот файл.

Довольно часто веб-сервер на Linux запускается под собственной учетной записью, иногда nobody иногда www-data иногда httpd иногда apache . Независимо от того, какой пользователь запускает демон веб-сервера, если вы хотите, чтобы он выполнял сценарий, ему нужно разрешение для этого. Редко можно сделать пользователя веб-сервера владельцем сценария или членом группы, которая владеет сценарием, так что это только оставляет others разрешение на предоставление ему доступа.

Альтернативный подход для сайта, на котором работает несколько веб-сайтов, состоит в том, чтобы создать пользователя для каждого сайта, а затем с помощью suexec указать в определении виртуального хоста, какого пользователя следует использовать для выполнения скриптов. Таким образом, вам не нужно давать веб-серверу какое-либо явное или неявное разрешение для сценариев.

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