SVNを使用してリポジトリを設定し、プロジェクトをアップロードしました。これらのプロジェクトに取り組んでいる複数のユーザーがいます。しかし、誰もがすべてのプロジェクトへのアクセスを必要とするわけではありません。各プロジェクトのユーザー権限を設定したい。
どうすればこれを達成できますか?
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ファイルにいくつかの簡単なドキュメントがあります。
@スティーブン・ベイリー
答えを完成させるために、リポジトリ内のプレーンテキストファイルを使用して、プロジェクトマネージャーにユーザー権限を委任することもできます。
これを行うには、次を含むデフォルトの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
ファイルを更新します。
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を使用して最小限のアクセス制御を行うこともできます。