web-dev-qa-db-ja.com

ファイル 'svn / repo / db / txn-current-lock'を開けません:許可が拒否されました

Linuxサーバーをセットアップし、ApacheとSVNおよびdav_svnをインストールしました。今、Tortoise SVNでhttps://x.x.x.x:x/svn/repoにアップロードしようとすると、

Can't open file '/server/svn/repo/db/txn-current-lock': Permission denied

SSLを正しくセットアップしました(ポートフォワーディングのためにリモートでも問題なくチェックアウトできます)。

これは、リポジトリフォルダーのLinux所有権に関係していると思います。これを設定する方法/コマンドは何ですか?

49
wsd

これはよくある問題です。あなたはほぼ間違いなくパーミッションの問題に直面しています。これを解決するには、Apacheユーザーがリポジトリ全体に対する読み取り/書き込みアクセス権を持っていることを確認してください。それを行うには、chown -R Apache:apache *chmod -R 664 * svnリポジトリの下にあるすべてのもの。

また、 here および here まだスタックしている場合。


コメントでOPの追加の質問に答えるために更新します:

「664」文字列は、アクセス許可の8進数(基数8)表現です。ここには3桁があり、ownergroup、およびeveryone else(「ワールド」と呼ばれることもあります)、それぞれ、そのファイルまたはディレクトリ。

各ベース8桁は3ビット(「0」の場合は000から「7」の場合は111まで)で表すことができることに注意してください。各ビットは何かを意味します:

  • 最初のビット:読み取り許可
  • 2番目のビット:書き込み許可
  • 3番目のビット:実行許可

たとえば、ファイルの764は次のことを意味します。

  • 所有者(1桁目)が読み取り/書き込み/実行(7)許可を持っている
  • グループ(2桁目)には読み取り/書き込み(6)許可があります
  • 他の全員(3桁目)が読み取り(4)許可を持っている

それが物事を解決することを願っています!

66
John Feminella

許可の問題です。これは、Apacheユーザーの「古典的な」読み取り/書き込み権限ではなく、selinuxの権限です。

Apacheは、httpd_sys_content_tとラベル付けされたファイルに書き込むことができません。それらは、Apacheによってのみ読み取ることができます。

次の2つの可能性があります。

  1. svnリポジトリファイルにhttpd_sys_content_rw_tのラベルを付けます:

    chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo
    
  2. selinuxブール値httpd_unified --> onを設定します

    setsebool -P httpd_unified=1
    

私は2番目の可能性を好みます。 httpdで接続された他のselinuxブール値でも再生できます。

getsebool -a | grep httpd
13
mezek

私も最近この問題を抱えており、それを引き起こしたのはSELinuxでした。 Jenkinsがビルドを実行してNexusにデプロイするように、コードが変更されたことをJenkinsに通知するSubversionのポストコミットをしようとしていました。

動作させるには、以下を実行する必要がありました。

1)まず、SELinuxが有効になっているかどうかを確認しました。

    less /selinux/enforce

これは、1(オンの場合)または0(オフの場合)を出力します

2)SELinuxを一時的に無効にします:

    echo 0 > /selinux/enforce

動作するかどうかテストしてみましょう。

3)SELinuxを有効にします。

    echo 1 > /selinux/enforce

SELinuxのポリシーを変更します。

4)最初に現在の構成を表示します。

    /usr/sbin/getsebool -a | grep httpd

これにより、httpd_can_network_connect-> offが得られます。

5)これをオンに設定すると、ポストコミットがSELinuxで機能します。

    /usr/sbin/setsebool -P httpd_can_network_connect on

これで再び動作するはずです。

3
user2169568

たとえば、debian

Sudo gpasswd -a svn-admin www-data
Sudo chgrp -R www-data svn/
Sudo chmod -R g=rwsx svn/
2
puchu

この問題があった

  1. 複数のユーザーが同じレポを使用していると問題が発生しました
  2. リポジトリを使用して他のユーザーをログアウトする

お役に立てれば

0
Pascal

休耕できる3つのステップ

  1. chmod -R 775 <repopath>  
    --->permissions for repository
    
  2. chown -R Apache:apache  <repo path>  
    ---> change owner as like svn conf file
    
  3. chcon -R -t httpd_sys_content_t /<repo path>  
    ----> change security context for svn repositary
    
0
Dreem Job

リポジトリの許可に加えて、/tmpディレクトリもすべてのユーザーが書き込み可能である必要があります。

0
Lofty Lion