Tôi đang cố gắng thiết lập một móc hậu nhận git sao cho khi nhận được một cam kết, một bản sao khác của kho lưu trữ trên máy được cập nhật (ví dụ: git pull origin master
). Tôi đang sử dụng gitosis để phục vụ kho lưu trữ và vì vậy tôi tin rằng móc sau nhận sẽ được chạy với tư cách là người dùng gitosis
, trong khi kho lưu trữ tôi muốn cập nhật khi nhận được thuộc sở hữu của www-data
. Làm thế nào tôi nên đi về việc này?Git post-receive hook để cập nhật một bản sao cục bộ thuộc sở hữu của một người dùng khác
Tôi đã nghe khoảng setuid
tập lệnh nhưng tôi không chắc liệu đây có phải là rủi ro bảo mật không? Và nếu nó không phải là một nguy cơ bảo mật, làm thế nào tôi sẽ đi về việc này? Tôi đoán tôi sẽ làm một cái gì đó giống như làm cho kịch bản thuộc sở hữu của www-data
và làm cho nó thế giới thực thi và kích hoạt bit setuid? Tôi đoán kịch bản này sẽ khá nhiều vô hại vì tất cả những gì nó làm là cập nhật kho lưu trữ, nhưng tôi muốn chắc chắn. Cảm ơn!
Chỉnh sửa: Có cách nào để thực hiện việc này bằng cách sử dụng sudo
không? Điều đó có an toàn hơn setuid
không? Ý tôi là, tôi không nghĩ rằng có nhiều vấn đề với setuid
nếu người dùng không phải là người chủ, nhưng tất cả cùng nó có vẻ như tôi sẽ phải nhảy qua một vài hoops để có được một tập lệnh setuid
để chạy.
Chỉnh sửa lần thứ hai: Có vẻ như tôi có thể có thể thực hiện việc này với một số phép thuật /etc/sudoers
và sudo -u
. Có lẽ tôi nên đăng nó trên ServerFault thay vào đó, nhưng ít nhất tôi đã học được một chút từ nỗ lực này.
Yeah, tôi loại figured nó đã được phù hợp hơn cho ServerFault sau khi công bố, nhưng tôi thường thấy những thứ git đây. Bạn có chắc chắn rằng dòng cho phép gitosis để chạy như www-dữ liệu? Tôi không chắc lắm.Ngay bây giờ tôi đang cố gắng làm một cái gì đó như thế này trong/etc/suiders: gitosis ALL = (www-data)/path/to/script và tập lệnh thực hiện lệnh git pull. – Ibrahim
Ngẫu nhiên, làm thế nào để bạn di chuyển một câu hỏi như thế này để serverfault? – Ibrahim
Chuyển động được thực hiện bởi người kiểm duyệt. – Kimvais