SVNでアクセス制御を設定するにはどうすればよいですか?


83

SVNを使用してリポジトリを設定し、プロジェクトをアップロードしました。これらのプロジェクトに取り組んでいる複数のユーザーがいます。ただし、すべての人がすべてのプロジェクトにアクセスする必要があるわけではありません。プロジェクトごとにユーザー権限を設定したい。

どうすればこれを達成できますか?

回答:


84

では、あなたのsvn \ reposの\ YourRepo \ confにフォルダに次の2つのファイルが、見つけるのauthzpasswdのを。これらはあなたが調整する必要がある2つです。

passwdファイルには、いくつかのユーザー名とパスワードを追加する必要があります。使用している人がいるので、すでにこれを行っていると思います。

[users]
User1=password1
User2=password2

次に、authzファイルを使用してそれに応じて権限を割り当てます。

必要な概念グループを作成し、それに人々を追加します。

[groups]
allaccess = user1
someaccess = user2

次に、権限とプロジェクトレベルの両方からアクセス権を選択します。

それでは、「すべてのアクセス」の人にルートからのすべてのアクセスを許可しましょう。

[/]
@allaccess = rw

ただし、「一部のアクセス」担当者には、下位レベルのプロジェクトへの読み取り専用アクセスのみを許可してください。

[/someproject]
@someaccess = r

また、authzファイルとpasswdファイルにいくつかの簡単なドキュメントがあります。


8
関連するマニュアルページは次のとおり
bean.com

1
注:ssh経由でリポジトリに直接アクセスした場合(svnserveなし)は
機能しません

たとえば、リポジトリの下にある1つのフォルダをユーザーに提供すると、ユーザーは直接リンクを使用してのみこのフォルダにアクセスできます。ユーザーがリポジトリを追加して、自分に割り当てられたフォルダのみを表示することはできますか?返信いただきありがとうございます 。
maoanz 2017

グループは@groupname、ルールを定義するときにこの1ビットで呼び出されます。これは、例では完璧です。
Wolfeh 2017

28

@スティーブンベイリー

回答を完成させるために、リポジトリ内のプレーンテキストファイルを介して、ユーザー権限をプロジェクトマネージャーに委任することもできます。

これを行うには、authz以下を含むデフォルトファイルを使用してSVNデータベースを設定します。

###########################################################################
# The content of this file always precedes the content of the
# $REPOS/admin/acl_descriptions.txt file.
# It describes the immutable permissions on main folders.
###########################################################################
[groups]
svnadmins = xxx,yyy,....

[/]
@svnadmins = rw
* = r
[/admin]
@svnadmins = rw
@projadmins = r
* =

[/admin/acl_descriptions.txt]
@projadmins = rw

このデフォルトauthzファイルは、SVN管理者がSVNリポジトリ内の「/admin/acl_descriptions.txt」と呼ばれる表示可能なプレーンテキストファイルを変更することを許可します。者またはプロジェクトマネージャーがユーザーを変更および登録するします。

次に、リビジョンがそのファイル(およびそのファイルのみ)で構成されているかどうかを検出するpre-commitフックを設定します。

そうである場合、このフックのスクリプトはプレーンテキストファイルの内容を検証し、各行がSVN構文に準拠しているかどうかを確認します。

次に、コミット後のフックは\conf\authz、次の連結でファイルを更新します。

  • テンプレート authzファイル
  • プレーンテキストファイル /admin/acl_descriptions.txt

最初の反復はSVN管理者によって行われ、次のように追加されます。

[groups]
projadmins = zzzz

彼は彼の修正をコミットし、それは更新します authzファイルます。

次に、プロジェクトマネージャー 'zzzz'は、ユーザーのグループと必要なユーザーを追加、削除、または宣言できます。彼はファイルをコミットし、authzファイルが更新されます。

そうすれば、SVN管理者は、すべてのSVNリポジトリのすべてのユーザーを個別に管理する必要がありません


27

私を捕まえた1つの落とし穴:

[repos:/path/to/dir/] # this won't work

だが

[repos:/path/to/dir]  # this is right

ディレクトリに末尾のスラッシュを含める必要はありません。そうしないと、OPTIONSリクエストに403が表示されます。


8

svn + ssh:を使用できます。これは、指定された場所にあるリポジトリへのアクセス制御に基づいています。

これが、他に何も設定できない大学でプロジェクトグループリポジトリをホストする方法です。グループが所有するディレクトリがあり、そこでsvn-admin(またはそれが何であれ)を実行するだけで、構成を行う必要がないことを意味します。


これは恐ろしい答えです。このsshメソッドは十分に文書化されておらず、Linuxでのみ機能するようです。
user1040323 2017年

単に真実ではありません。WindowsサーバーでSSHデーモンを実行するだけで、svn + sshはWindowsでもLinuxとまったく同じように機能します。WindowsマシンでSSHを実行する方法を説明するチュートリアルはたくさんあります。
チャックウォルバー2017

また、親愛なる@ user1040323、Windows以外にもLinux以外のプラットフォームがあります。私が使用していたマシンLinuxではなく、BSDのバリアントであったことは確かです。
Matthew Schinckel 2017

5

Apacheのアプローチの方が優れていることをお勧めしますが、SVN Serveは正常に機能し、非常に簡単です。

リポジトリが「my_repo」と呼ばれ、C:\ svn_repos:に格納されていると仮定します。

  1. 「C:\ svn_repos \ my_repo \ conf」に「passwd」というファイルを作成します。このファイルは次のようになります。

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. C:\ svn_repos \ my_repo \ conf \ svnserve.confセット:

    [general]
    password-db = passwd
    auth-access=read
    auth-access=write
    

これにより、ユーザーはこのリポジトリの読み取りまたは書き込みを行うためにログインする必要があります。

各リポジトリのpasswdファイルに適切なユーザーのみを含めて、リポジトリごとに次の手順に従います。


注意:パスワードはSVNconfファイルにプレーンテキストで保存されます。
AVA 2015

3

最良の方法は、Apacheをセットアップし、それを介してアクセスを設定することです。ヘルプが必要な場合は、svnブックを確認してください。Apacheを使用したくない場合は、svnserveを使用して最小限のアクセス制御を行うこともできます。


0

Apache Subversionはパスベースの承認をサポートしており、リポジトリ(ファイルまたはディレクトリ)内のパスに対するユーザーアカウントとグループアカウントの詳細なアクセス許可を構成するのに役立ちます。パスベースの承認は、アクセスなし、読み取り専用、読み取り/書き込みの3つのアクセスレベルをサポートします。

パスベースの認証権限は、特別な構文でリポジトリごとまたはサーバーごとの認証ファイルに保存されます。SVNBookの例を次に示します。

[calc:/branches/calc/bug-142]
harry = rw
sally = r

多くのパスとアカウントを持つ複雑なアクセス許可構造が必要な場合は、VisualSVNサーバーが提供するGUIベースのアクセス許可管理ツールを利用できます。

  • サーバー管理者は、VisualSVNサーバーマネージャーコンソールまたはPowerShellを介してユーザーとグループのアクセス許可を管理できます。
  • 管理者以外のユーザーは、RepoCfgを介して権限を管理できます。

VisualSVNサーバーマネージャーのリポジトリ権限 ここに画像の説明を入力してください

PowerShellのリポジトリ権限 ここに画像の説明を入力してください

管理者以外のユーザーは、RepoCfgツールを介して権限を管理できます ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.