Лучший способ гарантировать, что содержимое каталога всегда принадлежит Apache
У нас есть пара Apache VirtualHosts на сервере CentOS 7, и PHP иногда требует возможность создавать / редактировать / удалять файлы и / или папки, поэтому важно, чтобы разрешения всегда были apache.apache
рекурсивными.
Развертывания выполняются через Jenkins, как пользователь Jenkins, и я знаю, что могу просто добавить простое выполнение оболочки chown -R apache.apache /var/www/website
, и я сделаю это, но если кто-то, кроме меня, выполнит развертывание вручную или что-нибудь, что изменит разрешения, например создание нового файла или папки, то это может вызвать некоторые проблемы.
Я думал о том, чтобы просто сделать работу cron, чтобы периодически разбивать весь каталог, но будет 4 разных VHosts и, возможно, большое количество файлов для каждого, так что это часто не оптимально, но опять же, не выполнение этого часто означает, что могут возникнуть проблемы между изменением разрешений и выполнением задания cron.
Так кто-нибудь знает хороший способ убедиться, что владелец всегда установлен для определенного каталога? (рекурсивно) независимо от того, что пользователь делает что?
Сначала я подумал о Sticky Bits .. но я бы работал только на разрешения, а не на владение.
Затем я подумал об использовании чего-то вроде entr, которое я нашел в простом поиске Google. Он не доступен ни в одном репо, который я смог найти, поэтому вам нужно установить его вручную, но в основном он запускает команды, которые вы указываете, когда видит какие-либо изменения в папках / файлах, так что-то вроде
ls -d /var/www/foo.company.com | entr sh -c 'chown -R apache.apache /var/www/foo.company.com && echo "Chowned at $ (date)" >> /var/log/entr.log'
было бы достаточно ... Но я уверен, что есть решение, которое не требует ручной установки этого двоичного файла на серверы (я стараюсь максимально управлять пакетами через yum)
Любая помощь будет оценена!
Спасибо
Обновить
Zoredache упомянул, что я должен просто добавить apache
пользователя в другую группу пользователей, для которой требуются права на запись (то есть jenkins
, как я делаю развертывания), а затем установить бит ID разрешения группы (chmod 2775).
Мне нравится такой подход, но сейчас я сталкиваюсь с проблемой.
Вот консольные команды / выходные данные, связанные с разрешениями
[root@svr www]# chown -R apache.apache www.company.com [root@svr www]# chmod -R 2775 www.company.com [root@svr www]# getfacl www.company.com/ # file: www.company.com/ # owner: apache # group: apache # flags: -s- user::rwx group::rwx other::r-x [root@svr www]# ls -l total 0 drwxrwsr-x. 2 apache apache 6 Apr 29 09:47 www.company.com
Так это выглядит хорошо, верно? Однако, когда я пытаюсь выполнить развертывание, у меня возникает проблема с разрешениями ... Но если я верну каталог на 0775, он будет работать. Почему это не работает, когда я устанавливаю sgid?
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4