
クライアントからコミットした際に、post-commitで、svnでチェックアウトしている/var/www/sampleprojectディレクトリを"svn up"コマンドで更新をしたいと思っております。
しかし、tortoiseSVNからコミットすると、以下のエラーが表示されてしまいます。
<pre>
エラー: post-commitフックが失敗しました (終了コード: 1)。出力:
エラー: svn: ファイル '/var/www/sampleproject/.svn/lock' を開けません: 許可がありません
</pre>
post-commitの内容:
<pre>
#!/bin/bash
REPOS="$1"
REV="$2"LOG=/var/log/svn.log
export LANG=ja_JP.UTF-8
echo $2 > ${LOG}
whoami >> ${LOG}
/usr/bin/svn up /var/www/enjoynight >> ${LOG}
</pre>
post-commitで出力したログを確認してみると、"svn up"を実行しているユーザーは"user1"でした。
/var/www/sampleprojectのオーナーはapacheユーザー(apache.apache)です。
ためしに、"user1"にapacheグループ権限を追加してみましたが、結果は変わりませんでした。
一日中悩んでも解決出来ませんでした。
もしよろしければ、どなたか解決策をご教授頂けないでしょうか。
サーバーOS:CentOS5.3
Subversion:1.6.2
Apache:2.2.3
passenger:2.2.3
Ruby:1.8.7
Rails:2.3.2
クライアントOS:Windows Vista
tortoiseSVN:1.6.5
リポジトリへの接続方法:svn+ssh
コミットユーザー:user1
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>## 公開ディレクトリに.svnも入ってしまうので、svn updateよりは、面倒でもsvn exportにすべき…と思いますが。
とか書いたら…タイムリーにスラッシュドットに…
http://slashdot.jp/security/article.pl?sid=09/09 …
コレだと、cgiもソースファイルとか抜かれるかも知れない…ですな。
No.3
- 回答日時:
>オーナー:apache.apache
>パーミッション:全て755
「グループに対して書き込み禁止」ですよね?
でしたらやはりパーミッションエラーかと。
user1はapacheグループに属していて、しかしグループに対する書き込み権限はありません。
よって、
/var/www/sampleproject/.svn
ディレクトリ内にファイルの作成などはできませんのでlockファイルの作成もできません。
/var/www/sampleproject/.svnディレクトリを775にすると、
lockファイルなどの作成は可能でしょうが、今度は
/var/www/sampleproject
のsvn updateでファイルの書き込みができません。
/var/www/sampleproject以下の既存ファイルと既存ディレクトリにグループの書き込み権限を設定…で対処できるとは思いますが。
# と、No.2の回答で書いたのですが…。
[root@localhost tmp]# ls -al /var/www/enjoynight
合計 32
drwxrwxr-x 3 apache apache 4096 9月 23 23:35 .
drwxr-xr-x 13 root root 4096 9月 23 23:22 ..
drwxrwxr-x 6 apache apache 4096 9月 23 23:35 .svn
-rw-rw-r-- 1 svn svn 20 9月 23 23:35 test.html
[root@localhost tmp]#
svn+sshではなかったので…svnserveを動作しているユーザー&グループでファイル作成されていました。
# checkoutした時はファイル無かったもので…。
## 公開ディレクトリに.svnも入ってしまうので、svn updateよりは、面倒でもsvn exportにすべき…と思いますが。
## 削除ファイルを考えると、一度全削除してからexportの方がよいかも。
No.2
- 回答日時:
パーミッションの問題…のようですね。
ls -la /var/www/sampleproject
とした場合、どう表示されるでしょうか?
とりあえず、最初からやり直すとすると……
・apacheグループにuser1を追加する。
・rootユーザでumask 0002を実行してからsvnからチェックアウトを実行する。
http://www.stackasterisk.jp/tech/engineer/permis …
・チェックアウト後にオーナーを変更する。
chown -R apache:apache /var/www/sampleproject
で回避できませんかね?
先のlsコマンドでグループに書き込み権限付いていれば、オーナーの変更だけで済むかも知れませんが。
chmodの再帰的変更、ファイルとディレクトリでパーミッションを替えるのは面倒…だったかな。
chmod -R g+w /var/www/sampleproject
でいけるか……
この回答への補足
回答ありがとうございます。
>ls -la /var/www/sampleproject
試験的にに以下の状態にしていますが、改善されません。
オーナー:apache.apache
パーミッション:全て755
>・apacheグループにuser1を追加する。
apacheグループにuser1を追加してみましたが、同様の結果となりました。
どうも、svn up コマンド時に.svn/lockファイルを生成しているようなのですが、そのファイルに対してアクセス出来ないようです。
パーミッションエラー後に".svn/lock"ファイルを確認しようと試みても、既に削除されてしまっているため、".svn/lock"がどのオーナーで作成されているか不明です。
No.1
- 回答日時:
sshなどで接続して、ターミナルから
/usr/bin/svn up /var/www/enjoynight
を実行した場合は成功するのでしょうか?
またターミナルで実行した場合とフックスクリプトで実行した場合の環境変数の違い…とか。
/var/www配下ということなので…SELinuxで制限されていたりしませんか?
この回答への補足
回答ありがとうございます。
# プロジェクト名を置換するのを忘れていました。
# enjoynight → sampleprojectとします。
・ターミナルから/usr/bin/svn up /var/www/sampleprojectを行った場合
⇒ root以外は失敗する。
・ターミナルからpost-commitを直接たたいた場合。
⇒ root以外は失敗する。
SELinuxは無効にしてあります。
パーミッションエラーのようですが、
.svn/lockをどのLinuxユーザーが実行しているのかさえわからずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース AWSドメイン名でApacheテスト・ページを表示させる方法を教えて下さい。 1 2023/04/26 15:59
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- WordPress(ワードプレス) ワードプレスのエラー ログイン画面が表示できない 1 2022/11/05 09:51
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- Windows 10 プロファイルエラーについて 2 2022/12/16 09:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
bashでシングルクォート内の変...
-
Linux のシェルスクリプトの強...
-
ログにserver reached MaxReque...
-
ubuntu(linux)のシャットダウン...
-
ssl_error_logのエラー内容(AH...
-
ubuntuのシャットダウンが進ま...
-
AWSでSSH接続をしたいのですが...
-
Windowsのローカルディレクトリ...
-
Ubuntu on Xorgのログインについて
-
Linuxでブートディスクの交換後...
-
CentOSが起動時にフリーズ
-
ubuntu が起動しない。
-
ViエディタとVimエディタの違い...
-
ubuntuで デイスク/deb/loopと...
-
インストールできないですどう...
-
LinuxのノートパソコンでDVDコ...
-
OpenSSHのサーバー設定ファイル...
-
zorin OS
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LinuxでWine使うとどのくらいWi...
-
Core 2 Duo の古いパソコンに最...
-
Linux のシェルスクリプトの強...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuで デイスク/deb/loopと...
-
apacheでリバースプロキシを設...
-
CentOSが起動時にフリーズ
-
ubuntuのシャットダウンが進ま...
-
ubuntu が起動しない。
-
Windowsのローカルディレクトリ...
-
Ububtuでファイル共有できない...
-
Ubuntu on Xorgのログインについて
-
ログにserver reached MaxReque...
-
「/var/log」内のログの削除の...
-
ubuntu 24 へのCanon 複合機ス...
-
ssl_request_logの必要性について
-
私のパソコンでVirtualBoxは使...
-
WineのRufusでデバイスを検知す...
-
LinuxのノートパソコンでDVDコ...
おすすめ情報