Tôi biết rằng điều này đã được hỏi nhiều lần trước đây, nhưng tôi tin rằng tình hình của tôi là khác nhau.SVN hook pre-revprop-change không hoạt động
Tôi đang cố gắng thêm móc thay đổi trước khi sửa đổi vào kho lưu trữ SVN của chúng tôi để cho phép thay đổi được thực hiện để ghi nhật ký.
Trước khi tôi được thêm vào tập tin pre-revprop-change
tôi đã nhận được lỗi này:
$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log':
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
Không sao, tôi nghĩ. Tôi sẽ thêm nó:
$ cd /var/www/svn/myrepo/hooks
$ # Create the simplest hook possible
$ echo '#!/bin/sh' > pre-revprop-change
$ echo 'exit 0' >> pre-revprop-change
$ # Check that it looks correct
$ cat pre-revprop-change
#!/bin/sh
exit 0
$ # Looks good, now make it executable
$ chmod a+x pre-revprop-change
$ # Check the permissions
$ ls -al pre-revprop-change
-rwxr-xr-x 1 apache apache 17 2012-05-24 12:05 pre-revprop-change
$ # Run it, to make sure it runs, and check the error code
$ ./pre-revprop-change
$ echo $?
0
Vì vậy, theo mọi thứ khác tôi đã đọc trên SO, đó là tất cả những gì tôi cần để làm cho nó hoạt động. Tuy nhiên, khi tôi cố gắng để chỉnh sửa nội dung log lần nữa, tôi vẫn nhận được một lỗi (mật khẩu khác thời gian này):
$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log':
Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.
Có một vài điểm cần lưu ý:
1) Các kho được lưu trữ trên máy chủ SELinux (lõi Fedora 10). Có lẽ có điều gì đó mà tôi cần phải làm liên quan đến các điều khoản đó? Dưới đây là các điều khoản SE của móc:
$ ls -alZ pre-revprop-change
-rwxr-xr-x apache apache unconfined_u:object_r:httpd_sys_content_rw_t:s0 pre-revprop-change
2) Các kho đang được truy cập thông qua WebDAV (chú ý https://
trong tên kho). Có điều gì mà tôi cần phải thiết lập ở phía WebDAV để cho phép thay đổi trước khi thay đổi không?
Cho dù đây là an toàn phụ thuộc vào tiêu chuẩn của bạn về "an toàn" :) ... nhưng có, SELinux có thể gây ra một số vấn đề tế nhị, có thể được chẩn đoán bằng cách bật ghi nhật ký. – 0xC0000022L
Cảm ơn. Yeah, tôi không nghĩ rằng máy chủ của chúng tôi sẽ là trung tâm hack, nhưng tôi chỉ muốn chắc chắn rằng tôi đã không chỉ mở ra một lỗ hổng bảo mật lớn! Bạn có biết tại sao sử dụng 'httpd_sys_script_exec_t' không hoạt động? Có vẻ như từ tài liệu mà nó cần phải có ... –
Tôi cũng nghĩ rằng điều này đáng lẽ đã có hiệu quả. Không biết tại sao nó phải là 'httpd_exec_t' thay vì' httpd_sys_script_exec_t'. Nhưng có khả năng SELinux bằng cách nào đó có thể phân biệt các kịch bản có đầu ra đi tới Apache từ những nơi mà nó đi đâu đó.Bạn sử dụng Apache và không phải 'svnserve' (mặc dù Apache có thể ủy quyền nó), phải không? – 0xC0000022L