Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

Также см. здесь и здесь, если вы все еще застряли.


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

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

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

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

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

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

Надеюсь, что это очистит!

Ответ 2

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

Apache не может записывать файлы, помеченные как httpd_sys_content_t, их можно читать только apache.

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

  • помечать файлы хранилища svn как httpd_sys_content_rw_t:

    chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo
    
  • set selinux boolean httpd_unified --> on

    setsebool -P httpd_unified=1
    

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

getsebool -a | grep httpd

Ответ 3

У меня также была эта проблема в последнее время, и именно SELinux вызвал ее. Я пытался отправить post-commit подрывной кампании, чтобы уведомить Дженкинса о том, что код изменился, поэтому Дженкинс выполнил сборку и развернул 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) Включите эту функцию, и ваша пост-фиксация будет работать с SELinux:

    /usr/sbin/setsebool -P httpd_can_network_connect on

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

Ответ 4

например, на debian

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

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

Ответ 8

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