SVN を使用してリポジトリをセットアップし、プロジェクトをアップロードしました。これらのプロジェクトには複数のユーザーが取り組んでいます。ただし、誰もがすべてのプロジェクトへのアクセスを必要とするわけではありません。プロジェクトごとにユーザー権限を設定したい。
どうすればこれを達成できますか?
SVN を使用してリポジトリをセットアップし、プロジェクトをアップロードしました。これらのプロジェクトには複数のユーザーが取り組んでいます。ただし、誰もがすべてのプロジェクトへのアクセスを必要とするわけではありません。プロジェクトごとにユーザー権限を設定したい。
どうすればこれを達成できますか?
svn\repos\YourRepo\confフォルダーには、authzとpasswdの 2 つのファイルがあります。調整する必要があるのはこの 2 つです。
passwdファイルには、いくつかのユーザー名とパスワードを追加する必要があります。使用している人がいるので、すでにこれを行っていると思います:
[users]
User1=password1
User2=password2
次に、authzファイルに応じてパーミッションを割り当てます。
必要な概念グループを作成し、それに人を追加します。
[groups]
allaccess = user1
someaccess = user2
次に、パーミッションとプロジェクト レベルの両方から、彼らが持つアクセス権を選択します。
それでは、「すべてのアクセス」担当者にルートからのすべてのアクセスを許可しましょう。
[/]
@allaccess = rw
ただし、「一部のアクセス」担当者には、下位レベルのプロジェクトへの読み取り専用アクセスのみを許可します。
[/someproject]
@someaccess = r
また、 authzおよびpasswdファイルにはいくつかの簡単なドキュメントがあります。
@スティーブンベイリー
回答を完成させるために、リポジトリ内のプレーンテキストファイルを介して、ユーザー権限をプロジェクトマネージャーに委任することもできます。
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
ファイルを更新します。
authz
ファイル/admin/acl_descriptions.txt
最初の反復はSVN管理者によって行われ、次のように追加されます。
[groups]
projadmins = zzzz
彼は変更をコミットし、それによってauthz
ファイルが更新されます。
次に、プロジェクトマネージャー'zzzz'は、ユーザーのグループと必要なユーザーを追加、削除、または宣言できます。彼はファイルをコミットし、authz
ファイルが更新されます。
このように、SVN管理者は、すべてのSVNリポジトリのすべてのユーザーを個別に管理する必要はありません。
私を捕まえた1つの落とし穴:
[repos:/path/to/dir/] # this won't work
しかし
[repos:/path/to/dir] # this is right
ディレクトリに末尾のスラッシュを含める必要はありません。そうしないと、OPTIONS 要求に対して 403 が表示されます。
svn + ssh:を使用できます。これは、指定された場所にあるリポジトリへのアクセス制御に基づいています。
これが、他に何も設定できないユニでプロジェクトグループリポジトリをホストする方法です。グループが所有するディレクトリがあり、そこでsvn-admin(またはそれが何であれ)を実行するだけで、構成を行う必要がないことを意味します。
Apache のアプローチの方が優れていると思いますが、SVN Serve は問題なく動作し、非常に簡単です。
リポジトリが「my_repo」と呼ばれ、C:\svn_repos に保存されていると仮定します。
「C:\svn_repos\my_repo\conf」に「passwd」というファイルを作成します。このファイルは次のようになります。
[Users]
username = password
john = johns_password
steve = steves_password
C:\svn_repos\my_repo\conf\svnserve.conf セット:
[general]
password-db = passwd
auth-access=read
auth-access=write
これにより、ユーザーはログインしてこのリポジトリの読み取りまたは書き込みを行う必要があります。
passwd
各リポジトリのファイルに適切なユーザーのみを含めて、各リポジトリに対して次の手順に従います。
最善の方法は、Apache をセットアップし、それを介してアクセスを設定することです。ヘルプについては、 svn bookを確認してください。Apache を使用したくない場合は、svnserve を使用して最小限のアクセス制御を行うこともできます。