web-dev-qa-db-ja.com

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

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

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

79
user15425

svn\repos\YourRepo\confフォルダーには、2つのファイルauthzおよびpasswdがあります。これらは、調整する必要がある2つです。

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

[users]
User1=password1
User2=password2

次に、authzファイルを使用して、それに応じてアクセス許可を割り当てます。

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

[groups]
allaccess = user1
someaccess = user2

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

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

[/]
@allaccess = rw

ただし、「一部のアクセス権」のある人には、下位レベルのプロジェクトへの読み取り専用アクセス権のみを付与します。

[/someproject]
@someaccess = r

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

82
Stephen Bailey

@スティーブン・ベイリー

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

これを行うには、次を含むデフォルトの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管理者が '/ admin/acl_descriptions.txt'と呼ばれるSVNリポジトリ内の表示可能なプレーンテキストファイルを変更することを許可します。管理者またはプロジェクトマネージャーがユーザーを変更して登録します。

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

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

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

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

最初の反復はSVN管理者によって行われ、管理者は以下を追加します。

[groups]
projadmins = zzzz

彼は変更をコミットし、authzファイルを更新します。

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

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

27
VonC

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

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

しかし

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

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

26
Chris Burgess

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

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

8

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ファイルに適切なユーザーのみを含めます。

5
RB.

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

3