HgWebDir push-сообщение отклонено из-за ошибки - PullRequest
11 голосов
/ 20 апреля 2010

У меня есть новый сервер Fedora 12, на котором я пытаюсь настроить Mercurial. У меня yum install ed Mercurial, и большинство вещей, кажется, работает нормально. Однако после настройки hgwebdir.cgi через apache я не могу сделать hg push для единственного репозитория, который в настоящее время размещается. Я получаю сообщение об ошибке:

searching for changes
abort: HTTP Error 500: Permission denied: .hg/store/lock

httpd работает как пользователь apache

UID        PID  PPID  C STIME TTY          TIME CMD
root      1691     1  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1694  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1695  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1696  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1697  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1698  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1699  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1700  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd
apache    1701  1691  0 13:19 ?        00:00:00 /usr/sbin/httpd

и я установил разрешения, чтобы пользователь apache владел всем репо и всем. В последней попытке я даже сделал репо глобально доступным для записи.

[root@builds .hg]# ll
total 424K
drwxrwxrwx.  3 apache apache 4.0K 2010-04-19 14:43 .
drwxrwxrwx. 19 apache apache 4.0K 2010-04-15 13:33 ..
-rw-rw-rw-.  2 apache apache   57 2010-04-13 11:42 00changelog.i
-rw-rw-rw-.  1 apache apache   93 2010-04-16 15:33 branchheads.cache
-rw-rw-rw-.  1 apache apache 192K 2010-04-15 13:33 dirstate
-rw-r--r--.  1 apache apache  156 2010-04-19 14:43 hgrc
-rw-rw-rw-.  1 apache apache   42 2010-04-15 13:33 last-message.txt
-rw-rw-rw-.  2 apache apache   23 2010-04-13 11:42 requires
drwxrwxrwx.  4 apache apache 4.0K 2010-04-19 11:26 store
-rw-rw-rw-.  1 apache apache   45 2010-04-14 14:08 tags.cache
-rw-rw-rw-.  1 apache apache    7 2010-04-16 15:33 undo.branch
-rw-rw-rw-.  1 apache apache 192K 2010-04-16 15:33 undo.dirstate
[root@builds .hg]# cd store
[root@builds store]# ll
total 308K
drwxrwxrwx.  4 apache apache 4.0K 2010-04-19 11:26 .
drwxrwxrwx.  3 apache apache 4.0K 2010-04-19 14:43 ..
-rw-rw-rw-.  1 apache apache  20K 2010-04-16 15:33 00changelog.i
-rw-rw-rw-.  1 apache apache  81K 2010-04-16 15:33 00manifest.i
drwxrwxrwx. 17 apache apache 4.0K 2010-04-13 11:47 data
drwxrwxrwx.  3 apache apache 4.0K 2010-04-13 11:43 dh
-rw-rw-rw-.  2 apache apache 177K 2010-04-15 11:03 fncache
-rw-rw-rw-.  1 apache apache   67 2010-04-16 15:33 undo

У меня есть клон репозитория в другом месте на машине, работающий от имени другого пользователя. Если я установлю значение default в разделе [paths] файла clones hgrc для локального пути к файлу на сервере, push-сообщение работает нормально, но если я переключаю его на использование URL-адреса, я получаю ошибку каждый раз.

Некоторые возможные причуды в том, как я это настроил ... hgwebdir.cgi сидит в /var/www/cgi-bin, а репо - ребенок /opt/hg. Я также выключил suexec, и это, похоже, не решило проблему. Единственная строка, которую я добавил в конфигурации apache для запуска hgwebdir:

ScriptAlias /hg "/var/www/cgi-bin/hgwebdir.cgi"

hgweb.config также находится в /var/www/cgi-bin, и его содержимое:

[collections]
/opt/hg = /opt/hg

[trusted]
users = *

[web]
baseurl = /hg
push_ssl = false
allow_push = *

Браузер репо работает нормально, просто не работает push. Apache error_log не имеет ничего общего с этой ошибкой.

Ответы [ 8 ]

15 голосов
/ 19 декабря 2010

Для меня это были неправильные разрешения на сервере. A chown -R www-data /path/to/repo (на сервере) исправил все это для меня ... возможно, это отличается от вас. Удачи.

11 голосов
/ 29 ноября 2010

У меня была похожая проблема в Ubuntu.Проблема прекратилась, когда я ослабил разрешения для каталога .hg.

Я сделал chmod -R 777 .hg из каталога репозитория.После этого все заработало.Мне все еще нужно потренироваться, чтобы найти минимально разрешающую опцию, которая разрешает нажатия, но это работает на нашем внутреннем сервере разработки.

4 голосов
/ 29 сентября 2011

Вместо 777, когда веб-сервер работает под группой apache, а ваши репозитории в /opt/hg:

Выполните sudo chown :apache /opt/hg -R, чтобы добавить репозитории в группу apache, и sudo chmod g+w /opt/hg -R, чтобы предоставить доступ на запись в группу. Таким образом, вы просто даете достаточно разрешений.

Кстати, в Ubuntu процесс apache работает под www-data вместо apache.

1 голос
/ 07 ноября 2010

Это проблема selinux.

Я только что прошел ту же проблему

попробуйте это как root

echo 0> / selinux / принудительное исполнение

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

вот где я нашел решение

http://mercurial.808500.n3.nabble.com/Push-Denied-hg-store-lock-FC12-https-ldap-wsgi-td814854.html

информация по отключению selinux здесь

http://www.crypt.gen.nz/selinux/disable_selinux.html

1 голос
/ 09 сентября 2010

Мне кажется, что репо заблокирован с первой авторизации, в которой он получает наборы изменений. После получения chagesets hg пытается снова аутентифицироваться, в то время как, я полагаю, репо все еще заблокировано Hg проверяет 3 раза перед тем, как потерпеть неудачу

hg push https://versoes.solidarp.com.br/hgweb.wsgi/home/solidarp/public_repos/profile_andre --verbose --debug
using https://versoes.solidarp.com.br/hgweb.wsgi/home/solidarp/public_repos/profile_andre
sending between command
autorização http requerida
domínio: soliDARP
usuário: goolic
senha: 
autenticação http: usuário goolic, senha **************
enviando revisões para https://versoes.solidarp.com.br/hgweb.wsgi/home/solidarp/public_repos/profile_andre
sending capabilities command
autenticação http: usuário goolic, senha **************
capabilities: changegroupsubset lookup pushkey unbundle=HG10GZ,HG10BZ,HG10UN stream=65537 branchmap
sending heads command
autenticação http: usuário goolic, senha **************
procurando por mudanças
common changesets up to 000000000000
7 revisões encontradas
list of changesets:
3d58879c5dcc778704134804de35b0441412cb0f
a3e6697fa72c9a4e06030b61a84bd2a00427f26f
481ce6a7f0c58ed5b838fc86d1b93af6b857eaf1
afed11efb8e2716675a7a39baf3b8b57c8740f44
ba4d9574fd84311d3b894aea39e8338ad3b242cd
aea9b49b6a933a11d4801d0dbab0e5b07d70b2d2
9c1757572d3bac793332999e6966b1135bfaf844
empacotando mudanças: 0 trechos
empacotando mudanças: 1 trechos
empacotando mudanças: 2 trechos
empacotando mudanças: 3 trechos
empacotando mudanças: 4 trechos
empacotando mudanças: 5 trechos
empacotando mudanças: 6 trechos
empacotando mudanças: 7 trechos
empacotando mudanças: 8 trechos
empacotando mudanças: 9 trechos
empacotando mudanças: 10 trechos
empacotando mudanças: 11 trechos
empacotando mudanças: 12 trechos
empacotando mudanças: 13 trechos
empacotando mudanças: 14 trechos
empacotando mudanças: 15 trechos
empacotando mudanças: 16 trechos
empacotando mudanças: 17 trechos
empacotando mudanças: 18 trechos
empacotando mudanças: 19 trechos
empacotando mudanças: 20 trechos
empacotando mudanças: 21 trechos
empacotando manifestos: 0 trechos
empacotando manifestos: 1 trechos
empacotando manifestos: 2 trechos
empacotando manifestos: 3 trechos
empacotando manifestos: 4 trechos
empacotando manifestos: 5 trechos
empacotando manifestos: 6 trechos
empacotando manifestos: 7 trechos
empacotando manifestos: 8 trechos
empacotando manifestos: 9 trechos
empacotando manifestos: 10 trechos
empacotando manifestos: 11 trechos
empacotando manifestos: 12 trechos
empacotando manifestos: 13 trechos
empacotando manifestos: 14 trechos
empacotando manifestos: 15 trechos
empacotando manifestos: 16 trechos
empacotando manifestos: 17 trechos
empacotando manifestos: 18 trechos
empacotando manifestos: 19 trechos
empacotando manifestos: 20 trechos
empacotando manifestos: 21 trechos
empacotando arquivos: .project 0 trechos
empacotando arquivos: .project 1 trechos
empacotando arquivos: .project 2 trechos
empacotando arquivos: .project 3 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 4 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 5 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 6 trechos
empacotando arquivos: .settings/org.eclipse.jdt.core.prefs 7 trechos
empacotando arquivos: src/Transporte/Busao.java 8 trechos
empacotando arquivos: src/Transporte/Busao.java 9 trechos
empacotando arquivos: src/Transporte/Busao.java 10 trechos
empacotando arquivos: src/Transporte/Busao.java 11 trechos
empacotando arquivos: src/Transporte/Busao.java 12 trechos
empacotando arquivos: src/Transporte/Busao.java 13 trechos
empacotando arquivos: src/Transporte/Busao.java 14 trechos
empacotando arquivos: src/Transporte/Busao.java 15 trechos
empacotando arquivos: src/Transporte/Busao.java 16 trechos
empacotando arquivos: src/Transporte/Busao.java 17 trechos
empacotando arquivos: src/Transporte/Cidade.java 18 trechos
empacotando arquivos: src/Transporte/Cidade.java 19 trechos
empacotando arquivos: src/Transporte/Cidade.java 20 trechos
empacotando arquivos: src/Transporte/Cidade.java 21 trechos
empacotando arquivos: src/Transporte/Cidade.java 22 trechos
empacotando arquivos: src/Transporte/Cidade.java 23 trechos
empacotando arquivos: src/Transporte/Cidade.java 24 trechos
empacotando arquivos: src/Transporte/Cidade.java 25 trechos
empacotando arquivos: src/Transporte/Cidade.java 26 trechos
empacotando arquivos: src/Transporte/Cidade.java 27 trechos
empacotando arquivos: src/Transporte/Cidades.java 28 trechos
empacotando arquivos: src/Transporte/Cidades.java 29 trechos
empacotando arquivos: src/Transporte/Cidades.java 30 trechos
empacotando arquivos: src/Transporte/Cidades.java 31 trechos
empacotando arquivos: src/Transporte/Controle.java 32 trechos
empacotando arquivos: src/Transporte/Controle.java 33 trechos
empacotando arquivos: src/Transporte/Controle.java 34 trechos
empacotando arquivos: src/Transporte/Controle.java 35 trechos
empacotando arquivos: src/Transporte/Controle.java 36 trechos
empacotando arquivos: src/Transporte/Controle.java 37 trechos
empacotando arquivos: src/Transporte/Controle.java 38 trechos
empacotando arquivos: src/Transporte/Controle.java 39 trechos
empacotando arquivos: src/Transporte/Controle.java 40 trechos
empacotando arquivos: src/Transporte/Controle.java 41 trechos
empacotando arquivos: src/Transporte/Controle.java 42 trechos
empacotando arquivos: src/Transporte/Controle.java 43 trechos
empacotando arquivos: src/Transporte/Controle.java 44 trechos
empacotando arquivos: src/Transporte/Controle.java 45 trechos
empacotando arquivos: src/Transporte/Controle.java 46 trechos
empacotando arquivos: src/Transporte/Controle.java 47 trechos
empacotando arquivos: src/Transporte/Controle.java 48 trechos
empacotando arquivos: src/Transporte/Controle.java 49 trechos
empacotando arquivos: src/Transporte/Controle.java 50 trechos
empacotando arquivos: src/Transporte/Controle.java 51 trechos
empacotando arquivos: src/Transporte/Controle.java 52 trechos
empacotando arquivos: src/Transporte/Controle.java 53 trechos
empacotando arquivos: src/Transporte/Interface.java 54 trechos
empacotando arquivos: src/Transporte/Interface.java 55 trechos
empacotando arquivos: src/Transporte/Interface.java 56 trechos
empacotando arquivos: src/Transporte/Interface.java 57 trechos
empacotando arquivos: src/Transporte/Interface.java 58 trechos
empacotando arquivos: src/Transporte/Interface.java 59 trechos
empacotando arquivos: src/Transporte/Interface.java 60 trechos
empacotando arquivos: src/Transporte/Interface.java 61 trechos
empacotando arquivos: src/Transporte/Interface.java 62 trechos
empacotando arquivos: src/Transporte/Interface.java 63 trechos
empacotando arquivos: src/Transporte/Interface.java 64 trechos
empacotando arquivos: src/Transporte/Interface.java 65 trechos
empacotando arquivos: src/Transporte/Interface.java 66 trechos
empacotando arquivos: src/Transporte/Linha.java 67 trechos
empacotando arquivos: src/Transporte/Linha.java 68 trechos
empacotando arquivos: src/Transporte/Linha.java 69 trechos
empacotando arquivos: src/Transporte/Linha.java 70 trechos
empacotando arquivos: src/Transporte/Linha.java 71 trechos
empacotando arquivos: src/Transporte/Linha.java 72 trechos
empacotando arquivos: src/Transporte/Linha.java 73 trechos
empacotando arquivos: src/Transporte/Linha.java 74 trechos
empacotando arquivos: src/Transporte/Linha.java 75 trechos
empacotando arquivos: src/Transporte/Linha.java 76 trechos
empacotando arquivos: src/Transporte/Passagem.java 77 trechos
empacotando arquivos: src/Transporte/Passagem.java 78 trechos
empacotando arquivos: src/Transporte/Passagem.java 79 trechos
empacotando arquivos: src/Transporte/Passagem.java 80 trechos
empacotando arquivos: src/Transporte/Passagem.java 81 trechos
empacotando arquivos: src/Transporte/Passagem.java 82 trechos
empacotando arquivos: src/Transporte/Passagem.java 83 trechos
empacotando arquivos: src/Transporte/Passagem.java 84 trechos
empacotando arquivos: src/Transporte/Passagem.java 85 trechos
empacotando arquivos: src/Transporte/Passagem.java 86 trechos
empacotando arquivos: src/Transporte/Passagem.java 87 trechos
empacotando arquivos: src/Transporte/Passagem.java 88 trechos
empacotando arquivos: src/Transporte/Passagem.java 89 trechos
empacotando arquivos: src/Transporte/Viagem.java 90 trechos
empacotando arquivos: src/Transporte/Viagem.java 91 trechos
empacotando arquivos: src/Transporte/Viagem.java 92 trechos
empacotando arquivos: src/Transporte/Viagem.java 93 trechos
empacotando arquivos: src/Transporte/Viagem.java 94 trechos
empacotando arquivos: src/Transporte/Viagem.java 95 trechos
empacotando arquivos: src/Transporte/Viagem.java 96 trechos
sending unbundle command
sending 6254 bytes
autenticação http: usuário goolic, senha **************
abortado: HTTP Error 500: Permission denied: .hg/store/lock
0 голосов
/ 25 января 2014

Еще одна возможность для тех, кто ищет эти архивы.

Я запускал WSGIDaemonProcess из apache, вот так:

  WSGIScriptAlias /hg /srv/www/hg/wsgiapp.py
  WSGIDaemonProcess hgserve display-name=%{GROUP} user=hgrepo group=hgrepo \
                  threads=10 maximum-requests=1000 \
                  processes=2 umask=0007 inactivity-timeout=300
  WSGIProcessGroup hgserve

Итак, в моем случае пользователь: группа, владеющая файлами в репозитории, должна была быть hgrepo: hgrepo, и, действительно, я имела на это право. И все же, конечно же, быстрый экспериментальный chmod 0777 показал, что проблема была как-то стандартной проблемой владения / прав доступа. Что ж, получается, что у меня был другой WSGIDaemonProcess в конфигурации apache, для совершенно другой цели, указывающий на другое местоположение и назначенный другой группе процессов, пользователю и группе. Тем не менее, этот (выше) WSGIDaemonProcess работал как другой пользователь: группа, и, конечно, он не работал. На данный момент я только что удалил этот другой процесс, так как в любом случае он был только экспериментальным, но, кстати, вот один для архивов.

0 голосов
/ 19 апреля 2012

У меня была похожая ситуация с @ pete-brumm, но позже я перейду в контролируемый регион, отключение SELinux не вариант.

Выключите SELinux, как сказал Пит, и повторите действие - если оно работает, вы изолировали проблему. Включите его так:

# echo 1> /selinux/enforce

Прежде чем полностью отключить SELinux, попробуйте изменить контекст безопасности, в котором находятся ваши репозитории:

# chcon -R -t httpd_sys_content_t /path/to/repo
0 голосов
/ 25 июня 2010

Добрался до этой темы, пытаясь решить аналогичную ошибку, на немного другой установке (Ubuntu, файл CGI в базе данных хранилища) Короче говоря, у меня было 2 основных вопроса:

  • В итоге я удалил опцию baseurl
  • в hgrc и hgweb.config не всегда обрабатываются одинаково.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...