(Другой!) вопрос о полномочиях www-данных и корне - но со скручиванием

Короче говоря: действительно ли безопасно предоставить корень (пользователь) доступ к www-данным?

Более длинный оператор: как много вопросов, которые задают на этом использовании chmod g+s, POSIX ACLs и другие сайты umask относительно соответствующего способа предоставить полномочия/var/www/html и т.д., но мой немного отличается, и все, что я попробовал, кажется, не решает проблему.

/var/www/project/html <-содержит все веб-файлы/var/www/project/log <-содержит все основанные на проекте журналы

У меня также есть crontab, настроенный, чтобы пользователь root выполнил обслуживание и т.д. В рамках тех сценариев обслуживания (главным образом PHP так, чтобы я мог использовать свою общую библиотеку функций), мне передали результаты по каналу также к папке журнала, под тем же файлом журнала в течение дня, некоторые скрипты, запущенные один раз в день, другие (могут) работать каждую минуту.

В переводе в рабочее состояние моего приложения (через Бродягу) я оставляю его в течение нескольких минут (так, чтобы мои задания крона могли отправить на файл журнала), и затем я вхожу в приложение. Сразу я получаю ошибку при записи в дневной файл журнала. После проверки конечно же, это принадлежит root:root - конечно, задания крона создали его (если это уже не существовало)...

Но! Как часть сценария установки в создавании приложения, я выполняю следующее к концу:

chown -R www-data:www-data /var/www/project
chmod -R 775 /var/www/project
chmod g+s /var/www/project

... после которого мои перезагрузки сервера (имя хоста также изменяется перед перезагрузкой).

(Отметьте: я также попробовал вышеупомянутое запаздыванием/),

Мое понимание последней команды ("g+s") - то, что любой новый файл, это создается под той папкой, принял бы полномочия родительской папки. Это - очевидно, не случай, поскольку корень создает файл, и его полномочия являются root:root.

При выполнении различный "ls-l" я вижу (удаление размера файла, метки времени и т.д.):

/var/www # ls -l
drwxrwsr-- www-data www-data  project

/var/www # cd project
/var/www/project # ls -l
drwxrwsr--  www-data www-data html
drwxrwsr--  www-data www-data log

/var/www/project # cd log
/var/www/project/log # ls -l
-rw-r--r--  root root 170309.log

Так... Я удаляю тот файл журнала и затем повторяю показанный, chmod и chmod g+s команды, чтобы видеть, была ли это перезагрузка или изменение имени хоста, это отбрасывает меня... и конечно же, мой сценарий обслуживания создает файл журнала еще раз с root:root полномочиями.

Если я оставляю файл там и повторяю команды, я получаю результат, я был видом поиска:

/var/www/project/log # ls -l
-rwxrwxr--  2 www-data www-data 170309.log

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

AFAICS, у меня есть несколько решений:

  1. Когда функция, которая создает файл журнала (или через задание крона или через приложение), я проверяю, чтобы видеть, существует ли это уже и если это не делает, создайте его и затем "chown www-data:www-data todaysLogFile" и затем "chmod 774" он впоследствии... обходное решение, возможно, а не решение
  2. добавьте корень к группе www-данных (какие-либо потенциальные проблемы безопасности? это помогло бы?)
  3. используйте POSIX ACLs

Я действительно после горного твердого раствора здесь, а не взломов или обходных решений. Я знаю, что я не единственный, там делающий это, но должен быть более легкий путь!!!: O)

1
задан 13 April 2017 в 15:23

1 ответ

Так, длинное и за исключением него, если я не хочу смешать с umask (который я идеально никогда не хотел сделать), и при добавлении, что корень группе www-данных действительно не влияет ни на какие проблемы безопасности, я пошел с использованием ACLs.

, В целом, это было довольно безболезненным: 14.04 и позже автоматически монтирует разделы с опцией ACL так или иначе, таким образом, не было никакого monkeying вокруг в fstab, требуемом, и затем просто установка утилит ACL и установка необходимые полномочия для той папки (и любой последующий: facl также использует-R опцию), было быстро, прост и сделал точно, что, говорит относительно олова.

0
ответ дан 8 December 2019 в 06:18

Другие вопросы по тегам:

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