2008-09-17 19 views
77

私はSVNとアップロードされたプロジェクトを使ってリポジトリをセットアップしました。これらのプロジェクトでは複数のユーザーが作業しています。しかし、誰もがすべてのプロジェクトに取り組んでおり、アクセスする必要はありません。私は各プロジェクトの権限をユーザーと設定したいと思っています。SVNでアクセスコントロールを設定する方法は?

どうすればよいですか?

答えて

3

最も良い方法は、Apacheを設定し、それを使ってアクセスを設定することです。ヘルプについては、svn bookを確認してください。 Apacheを使用したくない場合は、svnserveを使用して最小限のアクセス制御を行うこともできます。あなたののsvn \ reposの\ YourRepo \ confにフォルダで

82

次の2つのファイル、のauthzpasswdのがあります。これらはあなたが調整する必要がある2つです。

passwdファイルには、ユーザー名とパスワードを追加する必要があります。

が希望概念的なグループを作成し、に人を追加します。

[users] 
User1=password1 
User2=password2 

を次にあなたがのauthzファイルに応じて権限を割り当てる:私はあなたがそれを使用している人々がいるので、あなたはすでにこれを行っていると仮定しますそれ:

[groups] 
allaccess = user1 
someaccess = user2 

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

それでは、私たちの「すべてのアクセス」みんなをルートからのすべてのアクセス与えてみましょう:

[/] 
@allaccess = rw 

をしかし、唯一の私たちの「いくつかのアクセスは、」みんなにいくつかの下位レベルのプロジェクトへの読み取り専用アクセス与える:

[/someproject] 
@someaccess = r 

また、authzpasswdファイルの簡単なマニュアルもあります。

+7

関連マニュアルページはhttp://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthzです。html – ErichBSchulz

+0

注:ssh(svnserveなし)経由でリポジトリに直接アクセスする場合は動作しません –

+0

リポジトリの下の1つのフォルダをユーザに与えると、ユーザは直接リンクでこのフォルダにアクセスできます。リポジトリを追加することは可能ですか?彼に割り当てられたフォルダだけが表示されますか?返信いただきありがとうございます 。 – maoanz

4

私はApacheのアプローチが良いと示唆していますが、SVN Serveはうまく動作し、かなり簡単です。

リポジトリが "my_repo" と呼ばれていると仮定すると、それがCに格納されています\ svn_repos: ":\ svn_repos \ my_repo \ confにC" を

  1. はに "passwdの" というファイルを作成します。 \ svn_repos \ my_repo \ confに\のsvnserve.confとは

    [general] 
    password-db = passwd 
    auth-access=read 
    auth-access=write 
    

を設定します。これは、読み取りまたはこれに書き込むには、ログインするユーザーを強制します:Cで

[Users] 
username = password 
john = johns_password 
steve = steves_password 
  • :このファイルは次のようになります。リポジトリ。

    それぞれのリポジトリに対して、passwdファイル内の適切なユーザーのみを含む以下の手順を実行します。

  • +0

    注意:パスワードはSVN confファイルにプレーンテキストで保存されています! – AVA

    6

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

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

    +0

    これは面倒な答えです。このsshメソッドは文書化されておらず、Linuxのみで動作するようです。 – user1040323

    +0

    単に真実ではありません。 1つは、自分のWindowsサーバーでSSHデーモンを実行する必要があり、svn + sshはLinuxの場合とまったく同じWindowsで動作します。 WindowsマシンでSSHを実行する方法を説明するチュートリアルがたくさんあります。 –

    +0

    また、dear @ user1040323には、Windows以外の他の非Linuxプラットフォームがあります。私は_wasn't_ Linuxではなく、いくつかのBSDの変種であったマシンをかなり確信しています。 –

    26

    @Stephenベイリー

    あなたの答えを完了するには、あなたもあなたのリポジトリ内のプレーンテキストファイルを介して、プロジェクトマネージャーへのユーザー権限を委任することができます。

    これを行うには、SVNデータベースをデフォルトのauthzファイルに設定します。

    ########################################################################### 
    # 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の管理者やプロジェクトマネージャが変更されますと呼ばれ、ユーザーを登録します。

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

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

  • プレーンテキストファイル/admin/acl_descriptions.txt
  • 最初の上に提示

    • TEMPLATE authzファイル:

      その後ポストcommitフックは、連結ので\conf\authzファイルを更新します反復はSVN管理者によって行われ、彼は以下を追加します:

      [groups] 
      projadmins = zzzz 
      

      彼は修正を行い、authzファイルを更新します。

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

      このように、SVN管理者は、すべてのSVNリポジトリのすべてのユーザに従う必要はありません。私を捕まえ

    25

    つの落とし穴:

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

    しかし

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

    あなたは、ディレクトリの末尾にスラッシュを含めないようにする必要があるか、OPTIONS要求のための403が表示されます。

    +0

    WTF、私はこれを探していませんでしたが、それは私の問題の答えをexacltyでした= D – Fox32

    関連する問題