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所有権に関係していると思います。これを設定する方法/コマンドは何ですか?
これはよくある問題です。あなたはほぼ間違いなくパーミッションの問題に直面しています。これを解決するには、Apache
ユーザーがリポジトリ全体に対する読み取り/書き込みアクセス権を持っていることを確認してください。それを行うには、chown -R Apache:apache *
、chmod -R 664 *
svnリポジトリの下にあるすべてのもの。
また、 here および here まだスタックしている場合。
「664」文字列は、アクセス許可の8進数(基数8)表現です。ここには3桁があり、owner、group、およびeveryone else(「ワールド」と呼ばれることもあります)、それぞれ、そのファイルまたはディレクトリ。
各ベース8桁は3ビット(「0」の場合は000から「7」の場合は111まで)で表すことができることに注意してください。各ビットは何かを意味します:
たとえば、ファイルの764は次のことを意味します。
それが物事を解決することを願っています!
許可の問題です。これは、Apacheユーザーの「古典的な」読み取り/書き込み権限ではなく、selinuxの権限です。
Apacheは、httpd_sys_content_t
とラベル付けされたファイルに書き込むことができません。それらは、Apacheによってのみ読み取ることができます。
次の2つの可能性があります。
svnリポジトリファイルにhttpd_sys_content_rw_t
のラベルを付けます:
chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo
selinuxブール値httpd_unified --> on
を設定します
setsebool -P httpd_unified=1
私は2番目の可能性を好みます。 httpd
で接続された他のselinuxブール値でも再生できます。
getsebool -a | grep httpd
私も最近この問題を抱えており、それを引き起こしたのは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
これで再び動作するはずです。
たとえば、debian
Sudo gpasswd -a svn-admin www-data
Sudo chgrp -R www-data svn/
Sudo chmod -R g=rwsx svn/
この問題があった
お役に立てれば
休耕できる3つのステップ
chmod -R 775 <repopath>
--->permissions for repository
chown -R Apache:apache <repo path>
---> change owner as like svn conf file
chcon -R -t httpd_sys_content_t /<repo path>
----> change security context for svn repositary
リポジトリの許可に加えて、/tmp
ディレクトリもすべてのユーザーが書き込み可能である必要があります。