85

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

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

4

7 に答える 7

88

svn\repos\YourRepo\confフォルダーには、authzpasswdの 2 つのファイルがあります。調整する必要があるのはこの 2 つです。

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

[users]
User1=password1
User2=password2

次に、authzファイルに応じてパーミッションを割り当てます。

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

[groups]
allaccess = user1
someaccess = user2

次に、パーミッションとプロジェクト レベルの両方から、彼らが持つアクセス権を選択します。

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

[/]
@allaccess = rw

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

[/someproject]
@someaccess = r

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

于 2008-09-17T09:29:50.300 に答える
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」を変更することを許可します。このファイルでは、SVN管理者またはプロジェクトマネージャーがユーザーを変更および登録します。

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

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

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

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

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

[groups]
projadmins = zzzz

彼は変更をコミットし、それによってauthzファイルが更新されます。

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

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

于 2008-09-17T13:49:16.913 に答える
27

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

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

しかし

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

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

于 2009-11-25T00:43:10.080 に答える
8

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

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

于 2008-09-17T10:12:45.907 に答える
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各リポジトリのファイルに適切なユーザーのみを含めて、各リポジトリに対して次の手順に従います。

于 2008-09-17T09:31:25.023 に答える
3

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

于 2008-09-17T09:17:01.530 に答える