Как обращаться с пользователем, у которого нет доступа к папке.hg?
У меня есть учетная запись BitBucket, и на моем сервере будет запускаться сценарий, который будет извлекать и обновлять работающий сервер, когда будет сделан push. Триггер работает, и после многих проблем с _www
пользователь доверяет hgrc или какому-то другому (у меня все получилось), он фактически выполняет команду.
Проблема в том, что я не могу заблокировать папку, а это означает, что мой _www
У пользователя нет прав доступа к папке.hg.
Какой хороший способ подойти к этому? Я не хочу делать папку.hg 0777. Я мог бы поставить _www
в той же группе, что и мой пользователь (что я считаю, это) и дать группе rw (что это, 0775?). Будет ли это приемлемым, или есть другие последствия для безопасности, которые я мог бы упустить, или лучший способ справиться с этим.
Я мог бы запустить команду со своим пользователем. И, может быть, я могу. BitBucket использует службу POST для публикации на моем сервере, и я делаю команду через PHP shell_exec()
(команда запускается только в том случае, если запрос поступил с IP-адреса BitBucket).
[Обновление] Я пошел дальше и попытался установить разрешения на 0775, и это все равно не сработало (_www
не в той же группе, что и мой пользователь). Та же ошибка, которая:
прервать: не удалось заблокировать репозиторий / путь / к / локальному / репо: разрешение запрещено
2 ответа
У вас есть правильная идея с вещами групп. Вам нужно:
- убедитесь, что пользователь www находится в той же группе, что и группа, которой принадлежит все в каталоге.hg
- убедитесь, что все в каталоге.hg доступно для записи по группе (
chmod -R g+w .hg
)
Если какие-либо другие пользователи, кроме www, будут загружать / вытягивать / обновлять в этом репо, вы также захотите использовать бит sticky-group, чтобы убедиться, что вновь созданные файлы и каталог имеют то же владение группой, что и .hg
Сам каталог.
find .hg -type d | xargs chmod g+s
Ваш первый абзац не совсем понятен, но вы пытались изменить .hgrc
файл на живом сервере, добавив:
[trusted]
users = _www
groups = _www