Как обращаться с пользователем, у которого нет доступа к папке.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
Другие вопросы по тегам