Subversion создает каталоги ревизий со слишком строгими разрешениями

Этим утром я попытался внести исправления в Subversion и обнаружил, что внезапно у меня нет на это разрешения.

Can't move '/svn/db/txn-protorevs/21000-ga9.rev' to '/svn/db/revs/21/21001':
Permission Denied

Посмотрев на каталог revs, я заметил, что кто-то зафиксировал 21000-ю ревизию, а права на запись группы для нового каталога по какой-то причине отсутствуют.

    drwxrwsr-x  2 svn    svn  24K 2008-10-27 10:04 19
    drwxrwsr-x  2 svn    svn  24K 2008-12-18 07:13 20
    drwxr-sr-x  2 jeff   svn 4.0K 2008-12-18 11:18 21

Установка группового разрешения на запись в этот каталог позволяет мне совершать коммит, так что я готов еще 1000 ревизий. Но почему это происходит и что я могу изменить, чтобы этого больше не повторилось?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
3 931
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Если у вас более одного разработчика, обращающегося к репозиторию через протокол file://, вы можете изучить возможность настройки сервера Subversion (с использованием svnserve или Apache). В этом решении сам сервер отвечает за весь доступ и разрешения для файлов репозитория, и вы не столкнетесь с этой проблемой.

Из SVN Книга:

  • Do not be seduced by the simple idea of having all of your users access a repository directly via file:// URLs. Even if the repository is readily available to everyone via a network share, this is a bad idea. It removes any layers of protection between the users and the repository: users can accidentally (or intentionally) corrupt the repository database, it becomes hard to take the repository offline for inspection or upgrade, and it can lead to a mess of file permission problems (see the section called “Supporting Multiple Repository Access Methods”). Note that this is also one of the reasons we warn against accessing repositories via svn+ssh:// URLs—from a security standpoint, it's effectively the same as local users accessing via file://, and it can entail all the same problems if the administrator isn't careful.

Наиболее вероятная причина такая, как сказал Грег. Кто-то обращается к репозиторию по протоколу file: // и имеет слишком строгий маска.

Нет, у всех одинаковая маска umask, и они используют протокол ssh.

Apocalisp 19.12.2008 00:13

Лучший способ решить эту проблему - получить доступ к репозиторию через сервер.

Если вы не возражаете против незашифрованной связи (что, похоже, имеет место, поскольку вы используете file://), svnserve очень легко настроить:

svnserve -d -r /svn

См. эта ссылка для получения помощи в настройке и настройке аутентификации.

Проблема в том, что вам придется настраивать аутентификацию каждого пользователя отдельно.

Чтобы подключиться к аутентификации вашей ОС, вам необходимо настроить сервер Apache SVN, что немного сложнее, см. эти общие инструкции. Вы можете найти конкретные инструкции для вашей ОС, погуглив.

Наконец, если вам нужен самый быстрый способ предотвратить сброс разрешения на запись группы при использовании file://, просто попросите всех установить правильную umask (002) при запуске своей оболочки или используйте svn через сценарий оболочки, который устанавливает его:

#!/bin/bash
# svnwrapper.sh
umask 002
/usr/bin/env svn $*

Убедитесь, что эта маска не является проблемой безопасности в вашей среде.

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