Не удается открыть файл 'svn/repo/db/txn-current-lock': разрешение запрещено

Я установил сервер Linux и установил Apache и SVN и dav_svn на нем. Теперь, когда я пытаюсь загрузить на https://x.x.x.x:x/svn/repo с черепахой SVN я получаю

Can't open file '/server/svn/repo/db/txn-current-lock': Permission denied

Я правильно настроил свой SSL (я могу оформить заказ, без проблем, даже удаленно из-за переадресации портов).

Я предполагаю, что это связано с владением Linux для папок репозитория. Как мне установить это / какие команды?

9 ответов

Решение

Это распространенная проблема. Вы почти наверняка столкнетесь с проблемами с разрешениями. Чтобы решить это, убедитесь, что apache пользователь имеет доступ на чтение / запись ко всему вашему хранилищу. Чтобы сделать это, chown -R apache:apache *, chmod -R 664 * для всего в вашем хранилище SVN.

Кроме того, смотрите здесь и здесь, если вы все еще застряли.


Обновление, чтобы ответить на дополнительный вопрос ОП в комментариях:

Строка "664" является восьмеричным (основание 8) представлением разрешений. Здесь есть три цифры, представляющие разрешения для владельца, группы и всех остальных (иногда называемых "миром"), соответственно, для этого файла или каталога.

Обратите внимание, что каждая цифра 8 основания может быть представлена ​​3 битами (000 для "0" - "111" для "7"). Каждый бит означает что-то:

  • первый бит: разрешения на чтение
  • второй бит: права на запись
  • третий бит: выполнить разрешения

Например, 764 для файла будет означать, что:

  • владелец (первая цифра) имеет права на чтение / запись / выполнение (7)
  • группа (вторая цифра) имеет разрешение на чтение / запись (6)
  • все остальные (третья цифра) имеют разрешение на чтение (4)

Надеюсь, что все проясняется!

Это проблема разрешения. Это не "классические" права на чтение / запись для пользователя apache, а selinux.

Apache не может записывать в файлы, помеченные как httpd_sys_content_t они могут быть прочитаны только Apache.

У вас есть 2 возможности:

  1. пометить файлы репозитория SVN как httpd_sys_content_rw_t:

    chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo
    
  2. установить selinux логическое httpd_unified --> on

    setsebool -P httpd_unified=1
    

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

getsebool -a | grep httpd

У меня тоже недавно была эта проблема, и именно SELinux вызвал ее. Я пытался получить пост-фиксацию Subversion, чтобы уведомить Дженкинса о том, что код изменился, чтобы Дженкинс выполнил сборку и развернул на Nexus.

Я должен был сделать следующее, чтобы заставить его работать.

1) Сначала я проверил, включен ли SELinux:

    less /selinux/enforce

Это выведет 1 (для включения) или 0 (для выключения)

2) Временное отключение SELinux:

    echo 0 > /selinux/enforce

Теперь проверьте, работает ли он сейчас.

3) Включить SELinux:

    echo 1 > /selinux/enforce

Измените политику для SELinux.

4) Сначала просмотрите текущую конфигурацию:

    /usr/sbin/getsebool -a | grep httpd

Это даст вам: httpd_can_network_connect -> off

5) Установите это на on, и ваш пост-коммит будет работать с SELinux:

    /usr/sbin/setsebool -P httpd_can_network_connect on

Теперь это должно работать снова.

Например на Debian

sudo gpasswd -a svn-admin www-data
sudo chgrp -R www-data svn/
sudo chmod -R g=rwsx svn/

Я решаю эту проблему, удалив txn-current-lock.

У меня просто была эта проблема

  1. Наличие нескольких пользователей, использующих один и тот же репо, вызвало проблему
  2. Выйти из любого пользователя, используя репо

Надеюсь это поможет

В дополнение к разрешениям хранилища, /tmp Каталог также должен быть доступен для записи всем пользователям.

3 шага, которые вы можете выполнить

  1. chmod -R 775 <repopath>  
    --->permissions for repository
    
  2. chown -R apache:apache  <repo path>  
    ---> change owner as like svn conf file
    
  3. chcon -R -t httpd_sys_content_t /<repo path>  
    ----> change security context for svn repositary
    

Попробуйте отключить SELinux этой командой /usr/sbin/setenforce 0, В моем случае это решило проблему.

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