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ファイルにいくつかの簡単なドキュメントがあります。
@groupname
、ルールを定義するときにこの1ビットで呼び出されます。これは、例では完璧です。
@スティーブンベイリー
回答を完成させるために、リポジトリ内のプレーンテキストファイルを介して、ユーザー権限をプロジェクトマネージャーに委任することもできます。
これを行うには、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リポジトリのすべてのユーザーを個別に管理する必要がありません。
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ブックを確認してください。Apacheを使用したくない場合は、svnserveを使用して最小限のアクセス制御を行うこともできます。
Apache Subversionはパスベースの承認をサポートしており、リポジトリ(ファイルまたはディレクトリ)内のパスに対するユーザーアカウントとグループアカウントの詳細なアクセス許可を構成するのに役立ちます。パスベースの承認は、アクセスなし、読み取り専用、読み取り/書き込みの3つのアクセスレベルをサポートします。
パスベースの認証権限は、特別な構文でリポジトリごとまたはサーバーごとの認証ファイルに保存されます。SVNBookの例を次に示します。
[calc:/branches/calc/bug-142]
harry = rw
sally = r
多くのパスとアカウントを持つ複雑なアクセス許可構造が必要な場合は、VisualSVNサーバーが提供するGUIベースのアクセス許可管理ツールを利用できます。