Не удается открыть файл '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 к папкам хранилища, как мне установить это/какие команды?
Ответы
Ответ 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
. В моем случае он решил проблему.